– M A R T I N F O W L E R
“Continuous Integration is a software development practice where members of a team
integrate their work frequently, usually each person integrates at least daily – leading to
multiple integrations per day. !
Each integration is verified by an automated build (including test) to detect integration
errors as quickly as possible.”
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
T Y P I C A L W O R K F L O W
What is the glue that holds CI together?
1 . U S E V E R S I O N C O N T R O L S O F T W A R E … I N FA C T, U S E G I T !
2 . E V E R Y O N E C O M M I T S T O T H E M A I N L I N E E V E R Y D A Y
3 . A U T O M A T E T H E B U I L D
4 . E V E R Y P U S H S H O U L D T R I G G E R A B U I L D
5 . M A K E T H E B U I L D S E L F - T E S T I N G
6 . K E E P T H E B U I L D FA S T
7 . T E S T I N A C L O N E O F T H E P R O D U C T I O N E N V I R O N M E N T
VA G R A N T
How do we push to the ‘Mainline’ everyday?
So what has changed?
U N I T T E S T S
I N T E G R A T I O N T E S T S
N O N - F U N C T I O N A L
An imperfect test today is better than a perfect test someday
Questions?