DevOps · Deploy safety
We build release pipelines for teams running Docker on AWS, Azure or their own servers: one gated path to production, the exact image that passed your checks, and a rollback written down before you need it.
CI is green and production looks fine, until someone notices it is not running the new code.
The pipeline builds the image once and pushes it, and the deploy hands Swarm the image digest it pulled, so production runs the build that passed your checks. After we fixed this on the medical-device platform, a live deploy confirmed the new build. The method is in our article Pin the digest: why Swarm ran the previous build.
We run the deploy job on a self-hosted runner inside each environment. It pulls and updates each service itself, so if Swarm rejects the update, the job goes red. On a clinical platform in three regions we moved 12 production targets off webhooks this way in three days. The runner dials out to GitHub, so nothing calls into production, and CI holds no host address, port or SSH key.
Production deploys come from one workflow, and only after the checks pass: unit and browser tests, a dependency audit and lint. The platform's own auto-deploy of the main branch is switched off. On an events platform the audit gate went on once we had brought 21 high and 3 critical advisories to zero, and every production deploy since has passed it. We also check that the gate still runs: path filters and runners that never start can quietly stop CI from seeing a change.
Within a release, migrations add or relax and never remove, so rolling back means redeploying the previous build. On a multi-tenant ticketing platform, eight migrations applied in under 20 seconds, and the old code then served the new schema for about 2.5 minutes with zero errors. The previous commit was tagged and the rollback was written down before the release.
For Terraform, a pull request produces a plan, a merge produces only a plan, and an apply uses the plan file that was reviewed. Any plan that deletes or replaces a resource needs an explicit approval for that stack.
Most engagements start with the Production Reliability Check, which reviews your release path and alerting in about two weeks. If you would rather talk first, book a 30-minute discovery call. For the alerting side, see observability.
Proof
A multi-region clinical platform
12 production targets moved off webhooks in three days to deploys that fail when the update is rejected.
Read the case studyA North American medical-device company
No SSH from CI, rolling Swarm releases, and the previous-build fault fixed by deploying the digest.
Read the case studyAn event-ticketing platform
One gated deploy job, eight migrations in under 20 seconds, zero errors on the old code.
Read the case studyAn events and entertainment brand
One gated path to production, the audit gate switched on at zero advisories, three silent gate failures fixed.
Read the case studyFAQ
Walk us through your pipeline in a 30-minute discovery call. No commitment.