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