https://docs.google.com/presentation/d/1hPqTTd8auXvezHbL5u-64NsO4Ka9y4gNYbCJQanPKUI/edit?usp=sharing
More broadly the deployment pipeline's job is to detect any changes that will lead to problems in production. These can include performance, security, or usability issues. A deployment pipeline should enable collaboration between the various groups involved in delivering software and provide everyone visibility about the flow of changes in the system, together with a thorough audit trail.
A good way to introduce continuous delivery is to model your current delivery process as a deployment pipeline, then examine this for bottlenecks, opportunities for automation, and collaboration points. From DeploymentPipeline by Martin Fowler
- From GitLab's Pipeline
From Continuous Delivery on Wikipedia - Download as PNG
Teams are pushing for automation across their environments(testing), including their development infrastructure. Pipelines as code is defining the deployment pipeline through code instead of configuring a running CI/CD tool. LambdaCD, Drone, GoCD and Concourse are examples that allow usage of this technique. From Thoughworks TechRadar
Jenkins approach is to have Groovy files, where most of the other players use yaml.
In the Typical Dev/Release Process, Staging becomes a bottleneck, so the solution is to Shift Left so earlier feedback is continuously provided on the feature branch.
From k8s-deployment-strategies
See How to rollout or rollback a deployment on a Kubernetes cluster?
- How to setup CI/CD workflow for Node.js apps with Jenkins and Kubernetes
- Achieving CI/CD with Kubernetes
- Jenkins Pipelines with Kubernetes on Azure
- Kubernetes on Azure: deliver applications continuously with Jenkins and Helm
- The DevOps 2.4 Toolkit: Continuous Deployment To Kubernetes
We've heard good things, but not experienced.
Kaniko (no more DinD DooD!)