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

Continuous Integration and Delivery

James Mwai
October 19, 2017

Continuous Integration and Delivery

A talk on Continous Integration, deployment and delivery presented at GDG cloud Nairobi on October 19, 2017.

James Mwai

October 19, 2017
Tweet

More Decks by James Mwai

Other Decks in Technology

Transcript

  1. Challenges • Software projects become large and complex as they

    grow • More members join the team and some are often remote.
  2. Challenges • Software projects become large and complex as they

    grow • More members join the team and some are often remote. • Tight delivery schedules
  3. Challenges • Software projects become large and complex as they

    grow • More members join the team and some are often remote. • Tight delivery schedules • Frequent need for updates, fixes and new features.
  4. Continuous Integration • A software Development practice where members of

    a team integrate their work frequently • Integration can be done by any member anytime but at least once in a day leading to multiple integrations in a day.
  5. Continuous Integration • A software Development practice where members of

    a team integrate their work frequently • Integration can be done by any member anytime but at least once in a day leading to multiple integrations in a day. • Each integration is verified by an automated build to detect any integration errors before the integration is done.
  6. Principles • Keep all files in Version control • Integrate

    at least once a day • Every integration should trigger an automatic build
  7. Principles • Keep all files in Version control • Integrate

    at least once a day • Every integration should trigger an automatic build • Run tests after every integration.
  8. Key Concepts of CI • Source Control • Tests •

    Automated Builds • Automated Deployments
  9. Version Control Git Mercurial Please use the above. Actually just

    use git!!! Outdated stuff - CVS, Subversion, Visual Source Safe
  10. Tests For good CI we need good tests setup. Tests

    ensure we do not break existing code when we introduce new features
  11. Tests For good CI we need good tests setup. Tests

    ensure we do not break existing code when we introduce new features • Unit Tests - A unit test determines the correctness of an individual component in a large codebase. A unit test should work in isolation from other tests. Unit tests are atomic.
  12. Tests For good CI we need good tests setup. Tests

    ensure we do not break existing code when we introduce new features • Unit Tests - A unit test determines the correctness of an individual component in a large codebase. A unit test should work in isolation from other tests. Unit tests are atomic. • Integration Tests - Integration tests determine the correctness of the codebase as a whole when all the individual components are brought together.
  13. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins
  14. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins • Go - CD tool built by thoughtworks
  15. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins • Go - CD tool built by thoughtworks • Bamboo - CI tool from Atlassian.
  16. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins • Go - CD tool built by thoughtworks • Bamboo - CI tool from Atlassian. • Strider - Open Source CI tool written in Nodejs
  17. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins • Go - CD tool built by thoughtworks • Bamboo - CI tool from Atlassian. • Strider - Open Source CI tool written in Nodejs • BuildBot - Open Source Python CI
  18. Popular CI Tools • Jenkins - Most popular CI tool

    written in Java. Has plenty of plugins • Go - CD tool built by thoughtworks • Bamboo - CI tool from Atlassian. • Strider - Open Source CI tool written in Nodejs • BuildBot - Open Source Python CI • TeamCity - Another free self-hosted CD platform by JetBrains
  19. CI as a Service • CodeShip • Travis CI •

    Circle CI • Gitlab CI • BuildKite
  20. CI as a Service • CodeShip • Travis CI •

    Circle CI • Gitlab CI • BuildKite • Visual Studio Team Services
  21. Continuous Delivery • Builds on top of Continous Integration and

    Continuous Deployment. • Approach where teams release software in short cycles.
  22. Continuous Delivery • Builds on top of Continous Integration and

    Continuous Deployment. • Approach where teams release software in short cycles. • Makes it possible to continuously adapt software to users needs.
  23. Continuous Delivery • Builds on top of Continous Integration and

    Continuous Deployment. • Approach where teams release software in short cycles. • Makes it possible to continuously adapt software to users needs. • Enables organisations to release frequently and get quick feedback
  24. Benefits of CI/CD • Faster reaction times • Reduced risks

    • Reduced deployment times • Automation saves time and money