Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Real-world Continuous Delivery: Learn, Adapt, I...

Michiel Rook
February 27, 2020

Real-world Continuous Delivery: Learn, Adapt, Improve (ConFoo 2020)

Discover how 4 development teams adopted the principles of Continuous Delivery on an existing application. Learn what worked well & what didn’t, and the reality of failing pipelines, flaky tests and brittle infrastructure: transitioning from manual bi-weekly releases to 30 deployments per day.

Michiel Rook

February 27, 2020
Tweet

More Decks by Michiel Rook

Other Decks in Programming

Transcript

  1. @michieltcs @michieltcs Create release Test release Deploy release every 2

    weeks Thursday (sprint end) Monday (sprint start) Tuesday
  2. @michieltcs 1. BRANCH RC 2. DEPLOY TO ACC 3. SIGNAL

    TESTER(S) 4. SIGNAL PO 5. FIX ON BRANCH 6. GET APPROVAL 7. DEPLOY TO PROD 8. VERIFY PROD
  3. @michieltcs REDUCE TOIL the kind of work tied to running

    a production service that tends to be manual, repetitive, automatable, tactical, devoid of enduring value, and that scales linearly as a service grows
  4. @michieltcs pipeline {
 stages {
 stage('Run tests') {
 sh "gradle

    check"
 }
 
 stage('Build docker image') {
 sh "docker build -t jobservice:${env.BUILD_NUMBER} ."
 sh "docker push jobservice:${env.BUILD_NUMBER}"
 }
 
 stage('Deploy staging') {
 sh "ansible-playbook -e BUILD=${env.BUILD_NUMBER}
 -i staging deploy.yml"
 }
 
 stage('Deploy production') {
 sh "ansible-playbook -e BUILD=${env.BUILD_NUMBER}
 -i prod deploy.yml"
 }
 }
 PIPELINE AS CODE image: registry.local/runner:latest
 
 stages:
 - test
 - images
 - deploy
 
 phpunit:
 stage: test
 script:
 - bin/phpunit
 
 images:
 stage: images
 script:
 - make images publish
 only:
 - master
 
 deploy:
 stage: deploy
 script:
 - make deploy
 only:
 - master
  5. @michieltcs @michieltcs UNIT TESTS UI / VISUAL TESTS Exploratory testing

    & user feedback Monitoring & alerting INTEGRATION / CONTRACT TESTS COST SPEED