The CD Pipeline Manifesto
December 22, 2024

The CD Pipeline Manifesto

A look at the current state of continuous delivery

Modern software teams need better tools to manage their continuous delivery pipelines. Today’s CD pipeline ecosystem is fragmented, rigid, and inefficient. We believe pipelines should be code-first, developer-friendly, and designed to handle the complexities of modern engineering workflows.

1. Single Source of Truth

What was damaged:

Pipeline definitions are scattered across multiple tools (GitHub Actions, Jenkins, ArgoCD, Kubernetes) and environments. This fragmentation leads to confusion, configuration drift, and duplication of effort.

repair:

Your pipeline needs a single, versioned source of truth—a unified definition that’s easy to understand, review, and evolve from.

2. Reusable, type-safe and composable

What was damaged:

Pipelines are often duplicated between projects, resulting in redundant code and maintenance overhead. Even if the core logic is the same, every pipeline for every project has to be rewritten. Without types, it’s difficult to put pipelines together.

repair:

Build pipelines like software. Modular, reusable components make it easy for teams to share jobs, templates, and logic. Utilize an appropriate type-safe language to ensure safety and composition.

3. Pipelines should be dynamic and flexible

What was damaged:

Most pipelines today are static and cannot adapt to dynamic inputs, environment changes, or complex dependencies. Conditional logic and execution-time decisions are combined (eg using conditions in shell scripts or YAML).

repair:

Pipelines require the power of real code: loops, conditionals, runtime logic, standard libraries, and more. Flexible pipelines can dynamically adapt to your team’s needs without hacking.

4. Transparent, visual and debuggable pipeline

What was damaged:

YAML and text-based pipelines are opaque. Visualizing workflows, understanding dependencies, and debugging failures is tedious and error-prone. With so many tools and services involved, it’s not easy to provide a view of the entire process.

repair:

Pipelines should be transparent, visual, and debuggable. Teams should be able to view processes, understand logic, and easily debug issues through a single pane of glass.

5. Pipelines are constantly evolving, and changes can lead to instability

What was damaged:

Whether the boundaries between components in a pipeline are clear or not, they exist and are constantly changing. When a component changes, failing to identify everything that needs to be updated is an easy mistake to make. For other software, automated tests are built to prevent regressions and unexpected behavior. Our pipeline definition should achieve the same effect.

repair:

Use complete modern programming languages ​​and their existing testing frameworks and tools.

6. The feedback loop is slow, resulting in slow recovery and slow progress.

What was damaged:

Many people are familiar with the pain of a slow remote build system or release pipeline. Small fixes or improvements have to be made, added, committed, pushed, waiting to be built, waiting to be released, waiting to be deployed, etc., and it all adds up. Often, due to limitations of the tools we use, this is the only way to know if a change is working as expected

repair:

Ability to run and debug the entire end-to-end process on our local computer with minimal configuration and no unexpected side effects.

FAQ

Who are you?

We are a small team of engineers behind Flippetis passionate about creating better tools for software teams. With experience working at companies like GitHub, InfluxData, and Cloudbees, we’ve seen firsthand how broken CD pipelines are, and we’re committed to fixing them.

2024-12-20 16:19:18

Leave a Reply

Your email address will not be published. Required fields are marked *