jenkins ci
DESCRIPTION
Introduction to Jenkins (Hudson) Continuous Integration ServerTRANSCRIPT
![Page 1: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/1.jpg)
Jenkins CI
haocheng
本著作係依據創用 CC Attribution-ShareAlike 3.0 Unported 授權條款進行授權。如欲瀏覽本授權條款之副本,請造訪 http://creativecommons.org/licenses/by-sa/3.0/ ,或寄信至 Creative Commons, 171 Second
Street, Suite 300, San Francisco, California, 94105, USA 。
![Page 2: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/2.jpg)
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. -- Martin Fowler
![Page 3: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/3.jpg)
Why CI?
Rapid Feedback
Reduced Risk
Collective Ownership
Continuous Deployment
Offload from people
![Page 4: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/4.jpg)
Best Practices of CI
Single Source Repository
Commit often
Make Your Build Self-Testing
Automate the Build
Build fast
![Page 5: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/5.jpg)
Jenkins
Extensible continuous integration server
![Page 6: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/6.jpg)
What is Jenkins?
Open-source CI server
Easy to install and use
ExtensibilityOver 330+ plugins (230+ last year)More than 20,000 installations
![Page 7: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/7.jpg)
Why Jenkins?
GUI to manage
Strong community and eco-system
Distributed builds
Open Source and Free!
![Page 8: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/8.jpg)
from Koshuke's slide: Continuous Integration in the Cloud with Hudson, JavaOne 2009
Lots of people are using Jenkins...
![Page 9: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/9.jpg)
Including Yahoo ;-)
![Page 10: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/10.jpg)
CI Tools survey in 2009
http://www.wakaleo.com/resources/polls
![Page 11: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/11.jpg)
CI Tools survey in 2010
http://www.wakaleo.com/resources/polls
![Page 12: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/12.jpg)
Another CI Tools Survey in 2010
![Page 13: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/13.jpg)
Jenkins is still growing...
![Page 14: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/14.jpg)
And the Job Trend is increasing
![Page 15: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/15.jpg)
Basic Features
Notice a change
Check out source code
Execute builds/tests
Record and publish results
Notify developers
![Page 16: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/16.jpg)
CI Overview
from Continuous integration with Hudson
![Page 17: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/17.jpg)
Notice a change
Build Periodically
Depend on other projects
Poll SCMSubversion Push vs. Pull
![Page 18: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/18.jpg)
Check out source code
Subversion
CVS
Git
Mercurial
Perforce
![Page 19: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/19.jpg)
Execute builds/tests
JavaAnt, Maven, Gradle
.NetMSBuild, PowerShell
Shell ScriptPython, Ruby, Groovy
![Page 20: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/20.jpg)
Record and publish results
JUnitTestNGFindbugsCoberturaCheckstylePMD
![Page 21: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/21.jpg)
Job Status
Job State: Job Stability:
![Page 22: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/22.jpg)
Findbugs Integration
![Page 23: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/23.jpg)
Cobertura Integration
![Page 24: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/24.jpg)
Project Relationship
![Page 25: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/25.jpg)
Notify developers
TwitteremailRSSIMIDE
Android/iPhoneFirefox
![Page 26: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/26.jpg)
![Page 27: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/27.jpg)
![Page 28: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/28.jpg)
Jenkins on Eclipse
Update Site: http://code.google.com/p/hudson-eclipse/
![Page 29: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/29.jpg)
Jenkins on Android
Android MarketJenkins Wiki
![Page 30: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/30.jpg)
eXtreme Feedback Panel plugin
![Page 31: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/31.jpg)
Jenkins Sound pluginhttp://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Sounds+plugin
![Page 32: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/32.jpg)
DEMO
![Page 33: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/33.jpg)
Installation&Upgrade
Download Tomcat 6
Download jenkins.war
Put jenkins.war under webapps
Start Tomcat
![Page 34: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/34.jpg)
Create a Job
![Page 35: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/35.jpg)
Configure a Job
![Page 36: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/36.jpg)
Configure Jenkins
![Page 37: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/37.jpg)
Manage Plugins
![Page 38: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/38.jpg)
Going Distributed
Need Isolation
Need Different environments
One Computer is not enough
![Page 39: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/39.jpg)
Add Slave using JNLP
Java Web Start on slave initiates the sessionJenkins sends JNLP file and jar filesA separate socket connection is made
![Page 40: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/40.jpg)
Add Slave using sshd
Master talks to sshd on a slaveSend slave.jar and “java -jar slave.jar”SSH session becomes bi-di byte stream
![Page 41: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/41.jpg)
Some Distributed Issues
Different OS/Environment
Install required tools
System administration
Need to install slave manually
Tied Jobs to Slaves
![Page 42: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/42.jpg)
Monitor Slaves
Monitor key metricsLow disck space and swapClock out of sync
Put offline automatically
![Page 43: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/43.jpg)
from Koshuke's slide: Continuous Integration in the Cloud with Hudson, JavaOne 2009
![Page 44: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/44.jpg)
from Koshuke's slide: Continuous Integration in the Cloud with Hudson, JavaOne 2009
![Page 45: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/45.jpg)
Labels to Rescue
![Page 46: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/46.jpg)
More on Label
Don't tied job to Slave, tied to Label
Label is a group of slaves
Support boolean expressions since 1.372windows&&IEFF||Chrome!windows
Can be used with Matrix Project
![Page 47: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/47.jpg)
Matrix project
Need to run in multiple environmentsDifferent JDKDifferent OSDifferent Browser
Axis could be:SlaveUser defined
Combination Filter !(OS=="linux" && browser=="IE")
Touchstone buildsSanity check
![Page 48: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/48.jpg)
Create Matrix Project
![Page 49: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/49.jpg)
Configuration
![Page 50: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/50.jpg)
Results
![Page 51: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/51.jpg)
DEMO
![Page 52: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/52.jpg)
Jenkins on Cloud
Jenkins EC2 plugin
CloudBees
8.5 cents/hour of EC2 vs 1 cent/minute of CB
![Page 53: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/53.jpg)
Jenkins EC2 plugin
AWS Account Information
![Page 54: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/54.jpg)
Jenkins EC2 plugin
And which AMI you want to start
![Page 56: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/56.jpg)
Miscellaneous
Integrate with Repository Browser
Monitor an external job
Jenkins for non-Java Projects
![Page 57: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/57.jpg)
Tracking Changes
![Page 58: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/58.jpg)
Integration with Sventon
![Page 59: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/59.jpg)
Monitor an External Job
Hudson Wiki - Monitor an External Job
![Page 60: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/60.jpg)
Jenkins for non-Java Projects
Python
PHP
Ruby
.Net
![Page 61: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/61.jpg)
![Page 62: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/62.jpg)
Jenkins: http://jenkins-ci.org/Mailing List: http://groups.google.com/group/jenkinsci-users?lnk=srg Wiki: http://wiki.jenkins-ci.org/ Follow @jenkinsci on Twitter"TS-5301 Continuous Integration in the Cloud with Hudson" by KoshukeHudson Wiki - Distributed buildsLabel and Matrix Project EnhancementsContinous Integration by Martin FowlerContinuous Integration with Hudson - the bookContinuous Integration with Hudson on JavaWorld
![Page 63: Jenkins CI](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54b7b8ee4a7959bf688b47ab/html5/thumbnails/63.jpg)
[email protected] @haocheng on Twitter