Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications

Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications
Explore PipeCD docs »

Overview

PipeCD provides a unified continuous delivery solution for multiple application kinds on multi-cloud that empowers engineers to deploy faster with more confidence, a GitOps tool that enables doing deployment operations by pull request on Git.

Visibility

  • Deployment pipeline UI shows clarify what is happening
  • Separate logs viewer for each individual deployment
  • Realtime visualization of application state
  • Deployment notifications to slack, webhook endpoints
  • Insights show metrics like lead time, deployment frequency, MTTR and change failure rate to measure delivery performance

Automation

  • Automated deployment analysis to measure deployment impact based on metrics, logs, emitted requests
  • Automatically roll back to the previous state as soon as analysis or a pipeline stage fails
  • Automatically detect configuration drift to notify and render the changes
  • Automatically trigger a new deployment when a defined event has occurred (e.g. container image pushed, helm chart published, etc)

Safety and Security

  • Support single sign-on and role-based access control
  • Credentials are not exposed outside the cluster and not saved in the control-plane
  • Piped makes only outbound requests and can run inside a restricted network
  • Built-in secrets management

Multi-provider & Multi-Tenancy

  • Support multiple application kinds on multi-cloud including Kubernetes, Terraform, Cloud Run, AWS Lambda
  • Support multiple analysis providers including Prometheus, Datadog, Stackdriver, and more
  • Easy to operate multi-cluster, multi-tenancy by separating control-plane and piped

License

Apache License 2.0, see LICENSE.

Contributing

We'd love you to join us! Please see the Contributor Guide.

Thanks to the contributors of PipeCD!

Owner
PipeCD
Continuous Delivery for Declarative Kubernetes, Serverless, and Infrastructure Applications
PipeCD
Comments
  • Update helm version to 3.8.2 from 3.2.1

    Update helm version to 3.8.2 from 3.2.1

    What this PR does / why we need it:

    Update helm version to 3.8.2 from 3.2.1 to support future OCI Registry features, etc.

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    Update default helm version to 3.8.2
    
  • Support multiple manual approvals

    Support multiple manual approvals

    What this PR does / why we need it:

    Which issue(s) this PR fixes:

    Fixes #1569

    Does this PR introduce a user-facing change?:

    Support multiple manual approvals
    
  • Hide comments added previously by actions-planpreview

    Hide comments added previously by actions-planpreview

    What this PR does / why we need it: Hide the previous comment added by actions-planpreview. With this change, only hide one comment at a time.

    image

    Which issue(s) this PR fixes: #3030

    Fixes #

    Does this PR introduce a user-facing change?:

    Plan-preview GitHub action automatically hides previously added comments before adding a new one
    
  • Add a dialog for skipping the analysis stage

    Add a dialog for skipping the analysis stage

    What this PR does / why we need it: This enables it to skip just the analysis stage from web UI. This means that this doesn't support the other stages.

    https://user-images.githubusercontent.com/50069775/164153255-2099e1c4-31b1-4113-8512-e8f7eaad3762.mov

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    Add a dialog for skipping the analysis stage.
    
  • Add an ability to filter apps by labels

    Add an ability to filter apps by labels

    What this PR does / why we need it: Aside from AutocompleteI couldn't find out any material UI component which accepts multiple texts that look like those mentioned in the issue.

    You can't select other than suggested options, that brings us a kind of validation for label format.

    https://user-images.githubusercontent.com/19730728/147307661-f2736e04-13e7-42f8-bb78-25b34695e0fa.mov

    Which issue(s) this PR fixes:

    Fixes https://github.com/pipe-cd/pipe/issues/2756 Ref https://github.com/pipe-cd/pipe/issues/2978

    Does this PR introduce a user-facing change?:

    Filtering applications by Labels is now available
    
  • Add minimum required dashboards

    Add minimum required dashboards

    What this PR does / why we need it: This PR adds three Grafana dashboards.

    image

    Because all dashboards got removed due to https://github.com/pipe-cd/pipe/pull/2191, let me merge once though I'm still in the middle of building.

    Which issue(s) this PR fixes:

    Ref https://github.com/pipe-cd/pipe/issues/1867

    Does this PR introduce a user-facing change?:

    NONE
    
  • Create insight collector

    Create insight collector

    What this PR does / why we need it:

    Create the data collector for insight.

    Sorry this PR is getting so big. It's because the test code is too big.

    Which issue(s) this PR fixes:

    Ref #1142

    Does this PR introduce a user-facing change?:

    NONE
    
  • Show label on the app detail and list page

    Show label on the app detail and list page

    What this PR does / why we need it: With it we can see labels on the application detail page as well as the application list page.

    On the detail page: image

    On the list: image

    Which issue(s) this PR fixes:

    Fixes https://github.com/pipe-cd/pipe/issues/3009

    Does this PR introduce a user-facing change?:

    NONE
    
  • Fix signal stop

    Fix signal stop

    What this PR does / why we need it:

    This function is called log.Fatalf, if err is caught. log.Fatalf calls os.Exit(n) and os.Exit is defined deferred functions are not run. FYI https://pkg.go.dev/os#Exit

    As tha above reason, if log.Fatalf is called, defer signal.Stop(ch) will not run.

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    NONE
    
  • Add a piped component that watches app configs

    Add a piped component that watches app configs

    What this PR does / why we need it: This PR adds a new Piped component that primarily watches two types of Applications that is:

    • already registered
    • unregistered

    For the first one (already registered):

    • Piped sends only configs that have been changed since then
    • Contol-plane updates Applications stored in Datastore

    For the second one (unregistered):

    • Piped sends all the latest configs every time whatever the repo is changed or not. The reason is the cache in control-plane is likely to be removed, and configs in Git is also likely to be removed
    • Control-plane caches them for suggesting when you attempt to add a new Application

    Once this gets merged, I will drill into the detailed implementation.

    Which issue(s) this PR fixes:

    Fixes https://github.com/pipe-cd/pipe/issues/2755 Ref https://github.com/pipe-cd/pipe/pull/2772 Ref https://github.com/pipe-cd/pipe/issues/2750

    Does this PR introduce a user-facing change?:

    NONE
    
  • Send notification to users via Slack when it fails to trigger deployment

    Send notification to users via Slack when it fails to trigger deployment

    What this PR does / why we need it: This PR is related to #2742, but doesn't fix it. The following picture is an example.

    Screen Shot 2021-11-10 at 16 36 35

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    Send notification events when it fails to trigger deployment
    
  • Update planpreview comment format

    Update planpreview comment format

    What this PR does / why we need it:

    Before

    Screenshot 2023-01-04 at 14 49 54

    Screenshot 2023-01-04 at 14 50 55

    After

    Screenshot 2023-01-04 at 14 49 22

    Screenshot 2023-01-04 at 14 50 19

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    NONE
    
  • Fix a crash bug of piped when generate diff from empty manifest on Cloud Run

    Fix a crash bug of piped when generate diff from empty manifest on Cloud Run

    What this PR does / why we need it: Fix crashes when generate plan preview from empty service manifest on Cloud Run.

    Stack Trace:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x13a953b]
    goroutine 207 [running]:
    github.com/pipe-cd/pipecd/pkg/app/piped/platformprovider/cloudrun.Diff({{0x0?, 0x0?}, 0x0?}, {{0xc000b49500?, 0x0?}, 0xc00011c2f8?}, {0xc0009f3740?, 0xc00063f600?, 0xb?})
        /home/runner/work/pipecd/pipecd/pkg/app/piped/platformprovider/cloudrun/diff.go:42 +0x5b
    github.com/pipe-cd/pipecd/pkg/app/piped/planpreview.(*builder).cloudrundiff(0xc0007b2180, {0x26e1080, 0xc0000b9c80}, 0xc00077e2d0, {0x26d3140?, 0xc0007dc620?}, {0x0, 0x0}, 0xc00063f640?)
        /home/runner/work/pipecd/pipecd/pkg/app/piped/planpreview/cloudrundiff.go:61 +0x4f7
    github.com/pipe-cd/pipecd/pkg/app/piped/planpreview.(*builder).buildApp(0xc0007b2180, {0x26e1080, 0xc0000b9c80}, 0x1?, {0xc000a50f30?, 0xc00052eec8?}, 0xc00077e2d0, {0x26eaea8?, 0xc000768780}, {0xc000ae3578, ...})
        /home/runner/work/pipecd/pipecd/pkg/app/piped/planpreview/builder.go:254 +0xabd
    github.com/pipe-cd/pipecd/pkg/app/piped/planpreview.(*builder).build.func1(0x1)
        /home/runner/work/pipecd/pipecd/pkg/app/piped/planpreview/builder.go:185 +0x205
    created by github.com/pipe-cd/pipecd/pkg/app/piped/planpreview.(*builder).build
        /home/runner/work/pipecd/pipecd/pkg/app/piped/planpreview/builder.go:182 +0xc55"
    timestamp: "2023-01-01T05:48:57.613492Z
    
    image

    Does this PR introduce a user-facing change?:

    Fix a crash bug of piped when generate diff from empty manifest on Cloud Run.
    
  • Support users defined script run on postSync

    Support users defined script run on postSync

    What would you like to be added:

    For some usecases, users want to have a way to execute their defined script when the application finishes syncing. We have postSync for that currently, so it would be nice if we enable them to do that.

    Why is this needed:

  • Support pipectl version control with asdf

    Support pipectl version control with asdf

    What would you like to be added:

    Currently, the pipectl installation method is traditional a little. https://pipecd.dev/docs/user-guide/command-line-tool/

    In cloud native, kubectl, helm, gcloud and eksctl have plugins for installing with asdf. https://github.com/asdf-vm/asdf-plugins/tree/master/plugins

    Why is this needed: In order to increase the number of users of PipeCD, collaboration with popular ecosystems is very beneficial. However, this idea is not a high priority 😎

  • Keep new line at end of file in yamlprocessor

    Keep new line at end of file in yamlprocessor

    What this PR does / why we need it: Currently, yamlprocessor doesn't respect new line at end of file if the input file contains it or not. This behavior causes unnecessary differences and should be corrected.

    For example, EventWatcher generates these changes. image

    Which issue(s) this PR fixes:

    Fixes #

    Does this PR introduce a user-facing change?:

    Keep new line at end of file in yamlprocessor
    
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

Jan 8, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

May 12, 2021
A Continuous Delivery system built on container technology
A Continuous Delivery system built on container technology

Drone is a Continuous Delivery system built on container technology. Drone uses a simple yaml configuration file, a superset of docker-compose, to def

Sep 29, 2021
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

flagger Flagger is a progressive delivery tool that automates the release process for applications running on Kubernetes. It reduces the risk of intro

Jan 5, 2023
Devtron is an open source software delivery workflow for kubernetes written in go.
Devtron is an open source software delivery workflow for kubernetes written in go.

Devtron is an open source software delivery workflow for kubernetes written in go.

Jan 8, 2023
Kubernetes Native Serverless Framework
Kubernetes Native Serverless Framework

kubeless is a Kubernetes-native serverless framework that lets you deploy small bits of code without having to worry about the underlying infrastructu

Dec 25, 2022
Template Compose - Continues Delivery

Template Compose - Continues Delivery

Feb 4, 2022
Bubbly is an open-source platform that gives you confidence in your continuous release process.
Bubbly is an open-source platform that gives you confidence in your continuous release process.

Bubbly Bubbly - Release Readiness in a Bubble Bubbly emerged from a need that many lean software teams practicing Continuous Integration and Delivery

Nov 29, 2022
Kubernetes OS Server - Kubernetes Extension API server exposing OS configuration like sysctl via Kubernetes API

KOSS is a Extension API Server which exposes OS properties and functionality using Kubernetes API, so it can be accessed using e.g. kubectl. At the moment this is highly experimental and only managing sysctl is supported. To make things actually usable, you must run KOSS binary as root on the machine you will be managing.

May 19, 2021
sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail 中文文档 sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),a

Dec 16, 2021
FaaSNet: Scalable and Fast Provisioning of Custom Serverless Container Runtimes at Alibaba Cloud Function Compute (USENIX ATC'21)

FaaSNet FaaSNet is the first system that provides an end-to-end, integrated solution for FaaS-optimized container runtime provisioning. FaaSNet uses l

Jan 2, 2023
Clutch provides Extensible platform for infrastructure management
Clutch provides Extensible platform for infrastructure management

Clutch provides everything you need to simplify operations and in turn improve your developer experience and operational capabilities. It comes with several out-of-the-box features for managing cloud-native infrastructure, but is designed to be org-agnostic and easily taught how to find or interact with whatever you run, wherever you run it.

Jan 1, 2023
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.

Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines, to enable infrastructure engineering teams to write tests that validate behaviour.

Sep 5, 2022
Cloud Infrastructure as Code

CloudIaC Cloud Infrastructure as Code CloudIaC 是基于基础设施即代码构建的云环境自动化管理平台。 CloudIaC 将易于使用的界面与强大的治理工具相结合,让您和您团队的成员可以快速轻松的在云中部署和管理环境。 通过将 CloudIaC 集成到您的流程中

Dec 27, 2022
Run Amazon EKS on your own infrastructure 🚀

Amazon EKS Anywhere Conformance test status: Amazon EKS Anywhere is a new deployment option for Amazon EKS that enables you to easily create and opera

Jan 5, 2023
Infrastructure as Code Workshop

infrastructure-as-code-workshop Infrastructure as Code Workshop Run Pulumi projects Just cd into the pulumi-* folder and type pulumi up Run Terraform

Oct 21, 2022
A Golang library for testing infrastructure in automated ways.

Infratest Infratest is a Golang library that we hope makes testing your infrastructure using tests that are written in Golang easier to do. The genera

Nov 2, 2022