scripts/vps-smoke.sh checks a real install end to end on a VPS you already have (a rented Linux server). It never creates or deletes cloud resources.
What it does
1
Install
Runs this tree’s
install.sh over SSH at SMOKE_FROM_TAG.2
Set up
Reads the one-time setup token, creates the admin, and mints an API token.
3
Deploy fixtures
Pushes three fixtures (Next.js, Go API, static, under
test/fixtures/smoke) to a scratch branch, connects the git source with a GitHub token, and deploys each on <app>.<SMOKE_DOMAIN_BASE>.4
Check TLS
Asserts each domain serves a verified TLS chain with at least 7 days before
notAfter.5
Redeploy and roll back
Pushes a second commit, redeploys, rolls back to the previous succeeded deploy, and checks the served body marker returns to the first commit.
6
Upgrade under load
Upgrades to
SMOKE_TO_TAG while curling every /healthz about ten times a second, and fails on any non-2xx.Prerequisites
- An Ubuntu VPS reachable by SSH as root or a passwordless sudo user, ports 80, 443 and 8080 open.
- A wildcard DNS A record for
SMOKE_DOMAIN_BASEpointing at it. - A scratch GitHub repo and a token with contents write on it. The run pushes and deletes a
smoke/<timestamp>branch. - On the runner:
ssh,curl,jq,openssl,git, and Go (orSMOKE_CLIpointing at alevelrail-clibinary).
Run
--dry-run prints the planned steps without touching the network. Use a fresh VPS for each run, since install and admin creation are one-time.
Optional environment variables:
CI
TheVPS smoke workflow is workflow_dispatch only. It takes the values above as inputs and needs the SMOKE_GH_TOKEN and SMOKE_SSH_KEY secrets.