# What are CI/CD pipelines?

A CI/CD pipeline tests, builds, and ships the app after every push.

> Source: https://www.mainpath.ai/en/wiki/ci-cd/

## What it is

A pipeline is a chain of automatic steps after a push. CI, continuous integration, checks and builds: tests, lint, an image, a version. CD, continuous delivery or deployment, ships that build to an environment you have named.

The push is the trigger. Everything that should happen after it lives in the pipeline, not in a sequence someone has to remember.

## What it is made of

Without a pipeline you build and copy by hand. Each step can turn out differently from the last time, because a dependency on the laptop was newer or a command was missing. With a pipeline the path is the same, no matter who made the push.

## What goes wrong

A push to `main` is the signal on MainPath to start that chain. The state in the repository is the state that gets built, not the folder someone has open. If a step fails, nothing is shipped. That is the point: better red in the pipeline than broken in production.

## What you otherwise look after yourself

The pipeline needs access to store images and to reach the server. That access lives as protected variables, not in the log. A log that prints tokens is a leak.

## How it shows up on MainPath

What happens in the chain is described under [What are pipelines]({{< relref "/docs/what-are-pipelines" >}}). You do not maintain a private list of commands for every project that only one person knows.

