Continuous Integration (CI)
Motivation
<ul><li>Integrate modules  </li></ul><ul><li>at late state of project </li></ul>Traditionally, different modules are  deve...
<ul><li>The earlier you can detect problems, the easier it is to resolve them </li></ul>In Agile processes, any programmer...
Definition
<ul><li>Continuous Integration is a software development practice where members of a team integrate their work frequently ...
Demonstration
Continuous Integration Server Source Repository Developers Solution: continually integrate and  test throughout the project
Developers check out code into their private workspaces
Developers work on functionality and validate it by running unit tests and local build
Developer update code to avoid conflicts
Developers work on functionality and validate it by running unit tests and local build
When done, they commit changes to the repository
The CI server monitors the repository and checks out changes when they occur
The CI server builds the system and  runs unit and integration tests
The CI server releases deployable  artefacts for QA testing
The CI server assigns a build label to the  version of the code that it just built
The CI server informs the team of the successful build and generates useful metrics
If the build or tests fail, the CI server alerts the team
The team fix the issue at the earliest opportunity
Continually integrate and test throughout the project
Metrics
Metrics generated by the CI server can be a useful indication of project “health”
Metrics generated by the CI server can be a useful indication of project “health” (cont.)
Reminder
<ul><ul><li>Check in frequently </li></ul></ul>Continuous Integration Reminder
<ul><ul><li>Don’t check in broken code </li></ul></ul>Continuous Integration Reminder
<ul><ul><li>Don’t check in untested code </li></ul></ul>Continuous Integration Reminder
<ul><ul><li>Don’t check in  </li></ul></ul><ul><ul><li>when the build is broken </li></ul></ul>Continuous Integration Remi...
<ul><ul><li>Don’t go home after checking in until the system builds </li></ul></ul>Continuous Integration Reminder
“ Oops, I did it again….” <ul><li>Peer pressure within team ensures policies are followed </li></ul>
Practices of  Continuous Integration
<ul><li>Maintain a Single Source Repository </li></ul>Practices of Continuous Integration
<ul><li>Automate the Build </li></ul>Practices of Continuous Integration
<ul><li>Make Your Build Self-Testable </li></ul>Practices of Continuous Integration
<ul><li>Every Commit Should Build the Mainline on an Integration Machine </li></ul>Practices of Continuous Integration
<ul><li>Keep the Build Fast </li></ul>Practices of Continuous Integration
<ul><li>Test in a Clone of the Production Environment </li></ul>Practices of Continuous Integration
<ul><li>Everyone can see what's happening </li></ul>Practices of Continuous Integration
<ul><li>Automate Deployment </li></ul>Practices of Continuous Integration
Conclusion
<ul><li>Detect integration errors as quickly as possible  </li></ul>Continuous Integration
<ul><li>Assumes a high degree of tests  </li></ul>Continuous Integration
<ul><li>Always have a deployable build </li></ul>Continuous Integration
<ul><li>Generate metrics to guide project management </li></ul>Continuous Integration
<ul><li>Continuous Integration is Vital for Agile Development </li></ul>Continuous Integration
? Q & A
Upcoming SlideShare
Loading in...5
×

Continuous Integration

885

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
885
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Continuous Integration

  1. 1. Continuous Integration (CI)
  2. 2. Motivation
  3. 3. <ul><li>Integrate modules </li></ul><ul><li>at late state of project </li></ul>Traditionally, different modules are developed by different teams/developers
  4. 4. <ul><li>The earlier you can detect problems, the easier it is to resolve them </li></ul>In Agile processes, any programmer can change any part of the code
  5. 5. Definition
  6. 6. <ul><li>Continuous Integration is a software development practice where members of a team integrate their work frequently </li></ul><ul><li>Each integration is verified by an automated build </li></ul><ul><li>Detect integration errors as quickly as possible </li></ul><ul><li>Assumes a high degree of tests </li></ul>Continuous Integration
  7. 7. Demonstration
  8. 8. Continuous Integration Server Source Repository Developers Solution: continually integrate and test throughout the project
  9. 9. Developers check out code into their private workspaces
  10. 10. Developers work on functionality and validate it by running unit tests and local build
  11. 11. Developer update code to avoid conflicts
  12. 12. Developers work on functionality and validate it by running unit tests and local build
  13. 13. When done, they commit changes to the repository
  14. 14. The CI server monitors the repository and checks out changes when they occur
  15. 15. The CI server builds the system and runs unit and integration tests
  16. 16. The CI server releases deployable artefacts for QA testing
  17. 17. The CI server assigns a build label to the version of the code that it just built
  18. 18. The CI server informs the team of the successful build and generates useful metrics
  19. 19. If the build or tests fail, the CI server alerts the team
  20. 20. The team fix the issue at the earliest opportunity
  21. 21. Continually integrate and test throughout the project
  22. 22. Metrics
  23. 23. Metrics generated by the CI server can be a useful indication of project “health”
  24. 24. Metrics generated by the CI server can be a useful indication of project “health” (cont.)
  25. 25. Reminder
  26. 26. <ul><ul><li>Check in frequently </li></ul></ul>Continuous Integration Reminder
  27. 27. <ul><ul><li>Don’t check in broken code </li></ul></ul>Continuous Integration Reminder
  28. 28. <ul><ul><li>Don’t check in untested code </li></ul></ul>Continuous Integration Reminder
  29. 29. <ul><ul><li>Don’t check in </li></ul></ul><ul><ul><li>when the build is broken </li></ul></ul>Continuous Integration Reminder
  30. 30. <ul><ul><li>Don’t go home after checking in until the system builds </li></ul></ul>Continuous Integration Reminder
  31. 31. “ Oops, I did it again….” <ul><li>Peer pressure within team ensures policies are followed </li></ul>
  32. 32. Practices of Continuous Integration
  33. 33. <ul><li>Maintain a Single Source Repository </li></ul>Practices of Continuous Integration
  34. 34. <ul><li>Automate the Build </li></ul>Practices of Continuous Integration
  35. 35. <ul><li>Make Your Build Self-Testable </li></ul>Practices of Continuous Integration
  36. 36. <ul><li>Every Commit Should Build the Mainline on an Integration Machine </li></ul>Practices of Continuous Integration
  37. 37. <ul><li>Keep the Build Fast </li></ul>Practices of Continuous Integration
  38. 38. <ul><li>Test in a Clone of the Production Environment </li></ul>Practices of Continuous Integration
  39. 39. <ul><li>Everyone can see what's happening </li></ul>Practices of Continuous Integration
  40. 40. <ul><li>Automate Deployment </li></ul>Practices of Continuous Integration
  41. 41. Conclusion
  42. 42. <ul><li>Detect integration errors as quickly as possible </li></ul>Continuous Integration
  43. 43. <ul><li>Assumes a high degree of tests </li></ul>Continuous Integration
  44. 44. <ul><li>Always have a deployable build </li></ul>Continuous Integration
  45. 45. <ul><li>Generate metrics to guide project management </li></ul>Continuous Integration
  46. 46. <ul><li>Continuous Integration is Vital for Agile Development </li></ul>Continuous Integration
  47. 47. ? Q & A
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×