Pages

▼

CI/CD Pipelines in the Cloud

☁️ AL Academy Masterclass

CI/CD Pipelines in the Cloud

A deploy that takes a weekend and a wiki page nobody trusts is not a release process — it is a liability. Here is how cloud pipelines turned shipping software from an event into a non-event.


There is a specific sound a team makes before a manual release. It is the sound of someone saying "okay, don't merge anything, I'm starting the deploy," followed by an hour of silence, followed by either relief or a very long night. I have heard it in startups and in banks. The technology underneath changes; the dread does not. CI/CD pipelines exist to delete that sound from your week, and the cloud is what made them cheap enough for everyone to have one.

What we are actually automating

Strip away the tooling and a pipeline encodes a single belief: that the path from "a developer typed something" to "users are running it" should be a known, repeatable, reviewable sequence of steps — not a ritual performed from memory. Continuous integration handles the first half: every change is merged often and verified automatically, so integration bugs surface in minutes instead of accumulating into a dreaded "merge week." Continuous delivery handles the second half: every change that passes is packaged into a deployable artifact and kept permanently in a shippable state. Continuous deployment goes one step further and removes the human button entirely.

None of this is new. Humble and Farley described deployment pipelines in 2010, before the cloud-runner era. What changed is the economics. You used to need a build server somebody babied in a closet. Now you describe the pipeline in a YAML file next to your code, and a managed platform conjures a fresh, disposable machine for each run, charges you for the minutes, and disappears. The barrier to having a real pipeline dropped to roughly zero, and the cloud is the reason.

The shape every pipeline shares

Underneath the branding, every CI system is the same animal: stages that gate each other. Build, then test, then scan, then package, then deploy — each one a checkpoint the change must clear before advancing. The ordering is not arbitrary. You run the cheap checks first so a typo fails the pipeline in ten seconds rather than after a ten-minute integration suite. Fail fast is not a slogan; it is the difference between a feedback loop developers respect and one they learn to route around.

The cloud adds two ingredients that make this shape sing. The first is ephemeral compute: every job starts on a clean machine, so builds never inherit yesterday's leftover state, and "works on my machine" stops being a defense. The second is elasticity: want to test against three runtime versions at once? A matrix spins up three runners in parallel, and you pay only for what you used. That kind of throwaway parallelism was a fantasy when build capacity was a fixed asset you had to ration.

Where the artifact becomes immutable

The hinge of a good cloud pipeline is the container image. Once your tested code is baked into an image and pushed to a registry, you have an immutable, addressable artifact — and crucially, you tag it with the commit SHA that produced it. This one habit pays for itself repeatedly. The image that passed your tests is the exact image that ships; there is no rebuild, no drift between staging and production. And because every release is a SHA-tagged image sitting in the registry, a rollback stops being archaeology and becomes a one-line redeploy of a previous tag.

Deploying without holding your breath

Building is the easy half. Deploying is where pipelines earn their keep, because how you replace the old version determines your blast radius when you are wrong — and you will sometimes be wrong. Rolling updates swap instances a few at a time: simple, but you live with mixed versions and slow rollback. Blue-green stands up a whole new environment and flips traffic in one move: instant rollback, at the cost of double infrastructure during the switch. Canary sends a trickle of real traffic to the new version, watches the metrics, and ramps up only if the numbers hold: the safest option, but it demands observability you have to build first.

Wrap whichever strategy you choose in gates. A protected production environment that pauses for a required reviewer is the entire substance of "continuous delivery with a human in the loop." Add branch restrictions so only your mainline can reach production, and automated quality gates that fail the run if coverage drops or a scan finds something nasty. The craft is calibrating those gates so they catch real problems without becoming friction people quietly bypass — because a gate that gets bypassed protects nothing.

The pipeline is privileged software

Here is the part teams underestimate: your pipeline holds the keys to your registry and your production cloud account, and it runs code on every pull request. It is often the softest target in the whole system. The single highest-leverage hardening move is to stop storing long-lived cloud keys as secrets and switch to OIDC, where the runner requests a short-lived, narrowly-scoped token at job time. Nothing long-lived is stored, so nothing long-lived can leak. Pair that with least-privilege token scopes per job, pinned dependencies, and a scan stage that actually fails the build, and your pipeline becomes an asset rather than an attack surface.

Why it is worth it

The research in Accelerate settled an old argument: speed and stability are not opposites. The teams that deploy most often also recover fastest and fail least, and they get there by investing in exactly the pipeline practices above. A mature cloud pipeline is, in the end, a machine for moving those four DORA numbers in the right direction at once. But the human payoff is simpler. The sound a team makes before a release goes quiet — not because everyone is holding their breath, but because nobody needs to.

This article accompanies the free CI/CD Pipelines in the Cloud masterclass at AL Academy. Workshop, PDF handbook and curated resources: alouatiq.com/academy.
ci-cdgithub-actionscloudcontainersdevops

No comments:

Post a Comment