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

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.

Benjamin Kluck

March 25, 2015
Tweet

More Decks by Benjamin Kluck

Other Decks in Programming

Transcript

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

    View Slide

  2. sipgate
    - 60+ Commiters
    - 10+ Teams
    - 50+ Software Systems
    - C, Java, Perl, PHP, HTML, CSS, JS
    - Debian
    - Scrum/Kanban

    View Slide

  3. Terminology
    Continuous Integration
    vs.
    Continuous Delivery
    vs.
    Continuous Deployment

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  7. B(u)y The Book

    View Slide

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

    View Slide

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

    View Slide

  10. Tools
    Jenkins

    View Slide

  11. Tools
    - Jenkins Debian Glue
    - http://jenkins-debian-glue.org/
    - Jenkins Job Builder
    - http://ci.openstack.org/jenkins-job-builder/

    View Slide

  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.

    View Slide

  13. Deployment Pipeline

    View Slide

  14. Build
    - Compilation
    - Dependency Managers
    - maven, cpanm, composer
    - Unit Tests
    - JUnit, Test::More, PHPUnit
    - Integration Tests
    - Sandbox

    View Slide

  15. Deployment Pipeline

    View Slide

  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

    View Slide

  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

    View Slide

  18. Questions?

    View Slide

  19. lunch.sipgate.de
    Hungry?

    View Slide