2. B
My name is Benjamin
I build cool web stuff
+256 794 600 025
www.lutaaya.net
me@lutaaya.net
@benjunni
3. Joe and Brenda are working on a project
Theyeachimplement afew classes
codethem
ensuretheyarewelltested
Whey they're done, they Integrate them
Everythingbreaks!
SCENARIO (COMMON)
4. That awkward moment near the end of the project
when everyone realizes that none of their classes
interoperate correctly
INTEGRATION HELL
5. Integration HELL is extremely risky for a project
Difficult to determine how long it will take to
resolve the integration problems
Exceedingthebudget
Exceedingtheschedule
INTEGRATION HELL
6. Originated form eXtreme Programming (XP)
Mitigates risks associated with integrating software
Avoids integration hell
Integrate early and often
CONTINUOUS INTEGRATION (CI)
7. Originated form eXtreme Programming (XP)
Mitigates risks associated with integrating software
Avoids integration hell
Integrate early and often
CONTINUOUS INTEGRATION WORK FLOW
8. Written in Java
CI software
Waytotestcode/functionalitychanges
Sendouttestresultsonpass/fail/othercriteria
Manage deployments
Tons of plugins
SVN/Git/Mercurial/Bazaar/etc
Selenium,Phing
Notifications
https://jenkins-ci.org/
JENKINS
9. Free and open source
Version control system
Can handle small to very large projects
Fast and efficient
https://git-scm.com
GIT
10. Benefits of a CI Server
Developers might forget to run the tests
Dont breakthebuild
It might take too long to run the tests
We might need to test the code in
various environments
Differentarchitectures(32-bit/64-bitIntel,ARM,PowerPC)
Differentplatforms(Windows,Linux,Mac,Solaris,HP-UX,AIX)
BENEFITS OF A CI SERVER
11. Reports provide useful insights to the team
Can track metrics line line coverage
Percentageoflinesexecutedbytheprogram'stests
Can run all sorts of utilities on your code
checksyle,findbugs,...
Can deploy automatically
Deployawebprojecttoastagingserver
Deploylateststablebuildofadesktop applicationtoour
websitefordownload
BENEFITS OF A CI SERVER
12. Install Jenkins
Set up a git server: (Can even use GitHub)
Configure Git to notify Jenkins of the changes
Configure Jenkins to;
Clonerepository when notification received
Buildtheproject
Runtheproject's tests
Generatelinecoveragereports
TASKS INVOLVED
13. B
My name is Benjamin
I build cool web stuff
+256 794 600 025
www.lutaaya.net
me@lutaaya.net
@benjunni