Devsiota.

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.