Continuous Delivery - Fuck it, Ship it!

Continuous Delivery - Fuck it, Ship it!

After many years of doing "make install" we felt the urge to build a continuous delivery system. After roundabout six month of hard work we reduced all the complexity to a single button.

3a15b4f5e737fed2ecab7b16c84aff1b?s=128

Benjamin Kluck

March 25, 2015
Tweet

Transcript

  1. Continuous Delivery "Fuck It, Ship It!”

  2. sipgate - 60+ Commiters - 10+ Teams - 50+ Software

    Systems - C, Java, Perl, PHP, HTML, CSS, JS - Debian - Scrum/Kanban
  3. Terminology Continuous Integration vs. Continuous Delivery vs. Continuous Deployment

  4. Continuous Integration http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx https://puppetlabs.com/blog/continuous-delivery-vs-continuous-deployment-whats-diff

  5. Continuous Delivery http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx https://puppetlabs.com/blog/continuous-delivery-vs-continuous-deployment-whats-diff

  6. Continuous Deployment http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx https://puppetlabs.com/blog/continuous-delivery-vs-continuous-deployment-whats-diff

  7. B(u)y The Book

  8. Deployment Pipeline http://en.wikipedia.org/wiki/Continuous_delivery

  9. Deployment Pipeline https://wiki.jenkins-ci.org/display/JENKINS/Delivery+Pipeline+Plugin

  10. Tools Jenkins

  11. Tools - Jenkins Debian Glue - http://jenkins-debian-glue.org/ - Jenkins Job

    Builder - http://ci.openstack.org/jenkins-job-builder/
  12. The Big Picture 1. Commit 2. Hook to Jenkins 3.

    Clone from GitHub 4. Build Debian Package 5. Upload Debian Package 6. Trigger Update 7. Get Package from Mirror 1. 2. 3. 4. 5. 6. 7.
  13. Deployment Pipeline

  14. Build - Compilation - Dependency Managers - maven, cpanm, composer

    - Unit Tests - JUnit, Test::More, PHPUnit - Integration Tests - Sandbox
  15. Deployment Pipeline

  16. Deploy 1. Disable Monitoring 2. Disable Load Balancing 3. Shutdown

    Service 4. Update Debian Package 5. Start Service 6. Test Service 7. Enable Load Balancing 8. Enable Monitoring
  17. Lessons Learned - Take your time - Good things take

    time - “WTF?” - Resist building workarounds - Fix the problem - Use the same name everywhere - Jenkins, Debian Package, HAProxy, Icinga
  18. Questions?

  19. lunch.sipgate.de Hungry?