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

I deploy on Fridays (and maybe you should too) (ConFoo 2024)

I deploy on Fridays (and maybe you should too) (ConFoo 2024)

Danger, Will Robinson! Don’t deploy on Friday! Maybe your team's or company's policy?

Join me as I share from my experience. Using examples from my work on multiple real world projects, I’ll discuss resilience and operability, deployment strategies, pipelines and continuous testing. Discover the details of trunk based development, feature toggles, pair programming and other best practices and gain the confidence to deploy any day of the week!

Michiel Rook

February 22, 2024
Tweet

More Decks by Michiel Rook

Other Decks in Technology

Transcript

  1. @michieltcs #StandWithUkraine ELITE PERFORMERS Comparing the elite group against the

    low performers, we find that elite performers have… frequent code deployments 208 TIMES MORE time to recover from incidents 2,604 TIMES FASTER lead time from commit to deploy 106 TIMES FASTER change failure rate (changes are 1/7 as likely to fail) 7 TIMES LOWER Throughput Stability Source: 2019 State Of DevOps report
  2. @michieltcs #StandWithUkraine CONTINUOUS TESTING UNIT TESTS ACCEPTANCE TESTS E2E TESTS

    Cost Speed Exploratory testing & user feedback Monitoring & alerting INTEGRATION TESTS
  3. @michieltcs #StandWithUkraine 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