B2B SaaS · Remote / EU · 2023–24
Release train for a SaaS product
Internal name: Harbor CI
CI/CD, staging parity, and a rollback path so a small product team could ship weekly without a dedicated release engineer.
Weekly
production releases, down from monthly fire drills
The situation
Merges sat for days. Staging did not match production. Deploys were a checklist on someone’s laptop. A bad release meant SSH and guesswork.
What we did
- PR pipeline: lint, tests, and a preview when it earned the wait.
- Same container image promoted staging → production.
- Infrastructure as code for the two environments that actually matter.
- Health checks and a one-step rollback documented in the repo, not in Slack.
What changed
Releases are a habit, not an event. Failures show up in the pipeline or the health check, not in a customer email first.
Stack
GitHub ActionsDockerTerraformAWSPlaywright