The software assembly line

On a factory line, a product passes through repeatable quality checks. A CI/CD pipeline does something similar for software: it builds the application from source code, runs tests, and prepares it for deployment.

Continuous integration combines code changes frequently and checks that the shared code still builds and passes tests. Continuous delivery keeps approved changes ready for someone to deploy. Continuous deployment deploys changes automatically once the required checks pass.

A deployment can leave a feature hidden until its release to users.

A pipeline makes the route repeatable

A pipeline is an ordered set of automated stages. Developers define them in files kept with the code in a repository. A runner, often a server, follows those instructions when changes are shared. It may install dependencies, run tests, check security or formatting, and produce a package for deployment.

A runner executes the jobs; it does not decide which checks matter. Teams choose those checks, including any formatting and linting rules.

GitHub Actions and Jenkins are examples of tools that run these pipelines. The team writes and maintains the instructions; the tool executes them and records the result.

Passing checks is only one step

Automating these stages makes releases more consistent, but it does not guarantee that the product works for users. For example, a pipeline can pass while checkout is broken if it has no checkout test.

Teams choose checks that cover important tasks and secure the pipeline’s access to the live service. After deployment, monitoring helps them spot problems, and a recovery plan helps them restore service.