Post on 15-Jan-2015
description
transcript
Continues Integration
Johan AluddenTwitter: johanaludden
Mail: me@johanaludden.comBlog: johanaludden.com/weblog
What is Continues Integration?• Compile continuously• Test continuously• Prepare installation continuously• Measure quality continuously• Create documentation continuously
2
Components• Developers• Version Control Repository• CI server• Build script• Feedback• Integration Build Machine
3
Developers• Makes Changes to code• Runs a private Build• Commits changes
4
Version Control Repository• Central point of truth• Good Practice• History• CVS, SVN, Perforce, Git
5
CI server• Checks for changes• Retrieves changes• Runs build script(s)• Dashboard
6
Build Script• Automated• Complete• Launched from Command line
7
Feedback• Email• Instant messaging• SMS• RSS• Sounds• Monitor
8
Integration Build Machine• Dedicated• The reference
9
Benefits• Risk reduction• Less repetition• Generate Deployable Software• Increase Visibility• More Confidence
10
Excuses• Increasing maintenance• Too much change• Frequently failed builds• Additional cost• Should already be made
11
First steps• Centralized repository• Compile code• Package binaries• Add testing• Add inspections
12
Common Problems• Long build time• Frequently failed builds• To much information• Many target platforms
13
Long build time• Make it faster• Split and run in Parallell• Split and run in Sequence
14
Frequently failed builds• Are all committed?• Can the devs run on local machine?• Code to fragile?• Tests to fragile?
15
To much information• Is all information necessary• What information can be removed• Multiple source of information• Pull not push• Visualize information
16
Many target platforms• One CI server per platform• Compile code• Package binaries
17
Pipelines• Jobs– Runs in Parallell
• Stages– Runs in sequence– contains 1 or more jobs
18
PipelinePipeline
19
PipelinePipeline
19
Stage
PipelinePipeline
19
StageStage
JobJob
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
19
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
StageStage
JobJob
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
PipelinePipeline
20
StageStage
JobJob
JobJob
StageStage
JobJob
JobJob
Stage
Job
CI servers• CruiseControl• Hudson• Cruise • Bamboo
21
Links• Martin Fowler (http://martinfowler.com/articles/continuousIntegration.html)
• Book (http://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380)
• CruiseControl (http://cruisecontrol.sourceforge.net/)
• Hudson (https://hudson.dev.java.net/)
• WikiPedia (http://en.wikipedia.org/wiki/Continuous_integration/)
22
Questions?
23