liveBook · Manning

Deployment pipeline

As explained in Effective Platform Engineering

An automated deployment pipeline is a tool-driven sequence that builds, validates, and deploys software with minimal manual intervention.

A deployment pipeline is an automated path that builds, tests, and deploys a change. For platform software, changes should move through environments by that path rather than through manual, one-off deployments. Automation reduces manual errors and makes releases more consistent, but the pipeline’s real value is confidence that the tested change is the one being released. section 2.2.1 section 10.3.1

A reliable path preserves the same commit SHA or tag in every environment after the initial one. It includes integration, functional, and end-to-end tests, with at least two early platform test instances before a change becomes a release candidate. Production-bound platform changes then pass through a preview environment, nonproduction, and production. Even a throw-away platform instance should be provisioned by an on-demand pipeline step so it follows the same deployment workflow. section 2.2.1

Keep the pipeline useful to the developers who own the service. Moving CI/CD into a centralized pipeline team may appear to simplify compliance, but it can turn a quality-building tool into a command-and-control gate and create handoffs. The goal is developer control of the pipeline alongside the governance requirements it must satisfy—not automation that hides delivery from the team. section 4.0 section 10.3.1

Release a hosted-zone change

For hosted zones and DNS delegation across two AWS accounts, a release pipeline can run linting, plan generation, and validation on git push, then apply the changes in its release stage. The pipeline needs a service-account role able to assume roles in both accounts. DNS configuration cannot be tested before implementation in the usual way; a dedicated test domain can instead validate the configuration strategy before it reaches the product domain. section 7.1.3

Start with boundaries that are easy to operate and evolve. A basic platform setup can deploy services in one pipeline and extensions in another, preserving their separate domains while getting early teams onto the platform. Test resilience outside production as well: nonproduction environments that omit high availability may give misleading release confidence and block developers when they fail. section 8.3

To introduce or improve a pipeline:

  • Map the current delivery flow, including handoffs, bottlenecks, and feedback loops; use developer feedback to identify costly manual deployment work. section 10.3.3 section 10.2.2
  • Prototype CI/CD automation with selected teams in a controlled environment, then measure deployment frequency, lead time, and failure rates before and after rollout. section 10.3.3
  • Observe a released platform change for breakage, developer impact, feature use, and the effectiveness of breaking-change management. section 2.2.1

How Effective Platform Engineering covers it

How deep it goes
Specifies environment progression, code identity, test stages, and release observation, with exercises for infrastructure pipelines.
Examples
Uses cross-account DNS delegation, VPC provisioning, and separate platform-service and extension pipelines.
What it assumes
Assumes familiarity with software delivery and infrastructure; teaches pipeline decisions through platform release exercises rather than introductory programming.
What you can do after
Build it from scratch by piloting a validated release path, then measure deployment frequency, lead time, and failures.
How it connects
Links CI/CD to developer autonomy, governance, software testing, release environments, and platform reliability.

Also explained in

Compare how 30 books explain deployment pipeline →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Effective Platform Engineering. The section links point to the parts of the book it draws on.