Presentation Slides

https://docs.google.com/presentation/d/1hPqTTd8auXvezHbL5u-64NsO4Ka9y4gNYbCJQanPKUI/edit?usp=sharing

Continuous Delivery

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

alt text

From Continuous Delivery on Wikipedia - Download as PNG

Pipeline As Code

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.

Shift Left

From Kubecon 2017 Deploying to Kubernetes Thousands of Times Per/Day - Dan Garfield, Codefresh & William Denniss, Google

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.

alt text

Deployment Strategies

From k8s-deployment-strategies

Matrix

Deployment strategies

Blue/Green:

Kubernetes deployment blue-green

Canary:

Kubernetes deployment canary

Rollback

See How to rollout or rollback a deployment on a Kubernetes cluster?

Articles about Jenkins CI/CD Pipelines with Kubernetes

Alternative CI/CD Tools to investigate

We've heard good things, but not experienced.

Continuous Delivery Pipeline:

JenkinsX GitLab CI/CD

Bake:

Kaniko (no more DinD DooD!)

Deploy: