Continuous Integration (Jenkins/Hudson) Dennys  謝松廷
Agenda <ul><li>What’s Continuous Integration </li></ul><ul><li>Jenkins/Hudson </li></ul><ul><ul><li>Features </li></ul></u...
What’s Continuous Integration? <ul><li>In software engineering, continuous integration (CI) implements  continuous process...
History <ul><li>Continuous Integration emerged in the Extreme Programming (XP) community, and XP advocates Martin Fowler a...
Continuous Integration <ul><li>Continuous Integration is a software development practice where members of a team  integrat...
Why Continuous Integration? <ul><li>Integration is hard, effort increase exponentially with </li></ul><ul><ul><li>Number o...
Continuous Integration Benefit <ul><li>Project Management </li></ul><ul><ul><li>Detect system development problems earlier...
Best Practice of CI <ul><li>Single Source Repository. </li></ul><ul><li>Automate the Build and Test </li></ul><ul><li>Ever...
Continuous Integration Tools <ul><li>Ref:  http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software </li...
Jenkins/Hudson
What’s Jenkins/Hudson <ul><li>An open source CI server </li></ul><ul><li>More then 23000 installations (Jul 2010) </li></u...
Continuous Integration Overview Ref:  http://www.javaworld.com/javaworld/jw-12-2008/images/CIOverview.jpg
CI Tool  Usage <ul><li>Ref:  http://java.dzone.com/node/28241/results </li></ul>Ref: http://www.wakaleo.com/resources/poll...
Jenkins v.s.Hudson <ul><li>Jenkins: Original Hudson team </li></ul><ul><li>Hudson: Oracle and Sonatype </li></ul><ul><li>R...
Jenkins Features <ul><li>Trigger a build </li></ul><ul><li>Get source code from repository </li></ul><ul><li>Automatically...
Jenkins Requirement <ul><li>Web Server (Tomcat, WebLogic, …) </li></ul><ul><li>Build tool (Maven, Ant) </li></ul><ul><li>S...
Jenkins Plugins <ul><li>Build triggers </li></ul><ul><li>Source code management </li></ul><ul><li>Build tools </li></ul><u...
Build Trigger <ul><li>Manually click build button </li></ul><ul><li>Build periodically </li></ul><ul><li>Build whenever a ...
Get Source Code (1/2) <ul><li>CVS (build-in) </li></ul><ul><li>SVN (build-in) </li></ul><ul><li>GIT (requires Git) </li></...
Get Source Code (2/2) <ul><li>Get current snapshot </li></ul><ul><li>Get baseline (tag) </li></ul>
Code Change History
Build Tools <ul><li>Java </li></ul><ul><ul><li>Maven (build-in), Ant, Gradle </li></ul></ul><ul><li>.Net </li></ul><ul><ul...
Build Wrapper <ul><li>Build name (version no) setter </li></ul><ul><li>Virtual machine (VMWare, Virtual Box) </li></ul><ul...
Build Notifier <ul><li>E-mail </li></ul><ul><li>Twitter </li></ul><ul><li>Jabber </li></ul><ul><li>IRC </li></ul><ul><li>R...
Build Report <ul><li>Static Code Analysis </li></ul><ul><ul><li>Checkstyle, PMD, Findbugs, Compiler Warning </li></ul></ul...
Static Code Analysis
CheckStyle
FindBugs
Open Tag
Duplicate Code
Test Report
Test Code Coverage <ul><li>Ref:  http://cobertura.sourceforge.net/sample/ </li></ul>
Artifact uploaders <ul><li>Tomcat </li></ul><ul><li>JBoss </li></ul><ul><li>Glassfish </li></ul><ul><li>WebSphere </li></u...
UI Enhancement <ul><li>Dashboard </li></ul><ul><li>Sectioned view </li></ul><ul><li>iPhone/Android </li></ul>
Security Management <ul><li>Security Realm </li></ul><ul><ul><li>LDAP </li></ul></ul><ul><ul><li>Jenkins's own user databa...
Security Management <ul><li>Matrix-based security </li></ul><ul><li>Project-based Matrix Authorization </li></ul>
Security Management Plugins <ul><li>Active directory, OpenID, MySQL, … </li></ul><ul><li>Role based privilege control </li...
Plugin Usage Statistics <ul><li>Ref:  http://jenkins-ci.org/content/updated-usage-stats-available </li></ul>
Features Not Mentioned <ul><li>Matrix project </li></ul><ul><li>Distributed build </li></ul>
Demo
Questions & Answers
Upcoming SlideShare
Loading in...5
×

Continuous Integration (Jenkins/Hudson)

23,934

Published on

Published in: Technology
2 Comments
29 Likes
Statistics
Notes
No Downloads
Views
Total Views
23,934
On Slideshare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
1,281
Comments
2
Likes
29
Embeds 0
No embeds

No notes for slide
  • Regression
  • Regression
  • Continuous Integration (Jenkins/Hudson)

    1. 1. Continuous Integration (Jenkins/Hudson) Dennys 謝松廷
    2. 2. Agenda <ul><li>What’s Continuous Integration </li></ul><ul><li>Jenkins/Hudson </li></ul><ul><ul><li>Features </li></ul></ul><ul><ul><li>Plugin </li></ul></ul><ul><ul><li>Security Management </li></ul></ul><ul><li>Demo </li></ul><ul><li>Q&A </li></ul>
    3. 3. What’s Continuous Integration? <ul><li>In software engineering, continuous integration (CI) implements continuous processes of applying quality control - small pieces of effort, applied frequently. </li></ul><ul><li>Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. </li></ul><ul><li>Ref: http://en.wikipedia.org/wiki/Continuous_integration </li></ul>
    4. 4. History <ul><li>Continuous Integration emerged in the Extreme Programming (XP) community, and XP advocates Martin Fowler and Kent Beck first wrote about continuous integration circa 1999. </li></ul>
    5. 5. Continuous Integration <ul><li>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. </li></ul><ul><li>Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. </li></ul><ul><li>-- Martin Fowler </li></ul><ul><li>Ref: http://martinfowler.com/articles/continuousIntegration.html </li></ul>
    6. 6. Why Continuous Integration? <ul><li>Integration is hard, effort increase exponentially with </li></ul><ul><ul><li>Number of components </li></ul></ul><ul><ul><li>Number of bugs </li></ul></ul><ul><ul><li>Time since last integration </li></ul></ul><ul><ul><li>Ref: http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson </li></ul></ul>
    7. 7. Continuous Integration Benefit <ul><li>Project Management </li></ul><ul><ul><li>Detect system development problems earlier </li></ul></ul><ul><ul><li>Reduce risks of cost, schedule, and budget </li></ul></ul><ul><li>Code Quality </li></ul><ul><ul><li>Measurable and visible code quality </li></ul></ul><ul><ul><li>Continuous automatic regression unit test </li></ul></ul>
    8. 8. Best Practice of CI <ul><li>Single Source Repository. </li></ul><ul><li>Automate the Build and Test </li></ul><ul><li>Everyone Commits Every Day </li></ul><ul><li>Keep the Build Fast </li></ul><ul><li>Everyone can see what's happening </li></ul><ul><li>Automate Deployment (Optional) </li></ul>
    9. 9. Continuous Integration Tools <ul><li>Ref: http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software </li></ul>
    10. 10. Jenkins/Hudson
    11. 11. What’s Jenkins/Hudson <ul><li>An open source CI server </li></ul><ul><li>More then 23000 installations (Jul 2010) </li></ul><ul><li>Plug-in extensibility ( Over 370 plugins) </li></ul><ul><li>MIT license </li></ul>
    12. 12. Continuous Integration Overview Ref: http://www.javaworld.com/javaworld/jw-12-2008/images/CIOverview.jpg
    13. 13. CI Tool Usage <ul><li>Ref: http://java.dzone.com/node/28241/results </li></ul>Ref: http://www.wakaleo.com/resources/polls <ul><li>Total vote: 643 </li></ul><ul><li>First Vote: 2010/02/12 </li></ul><ul><li>Last Vote: 2011/03/08 </li></ul>
    14. 14. Jenkins v.s.Hudson <ul><li>Jenkins: Original Hudson team </li></ul><ul><li>Hudson: Oracle and Sonatype </li></ul><ul><li>Ref: http://jenkins-ci.org/content/hudsons-future </li></ul>
    15. 15. Jenkins Features <ul><li>Trigger a build </li></ul><ul><li>Get source code from repository </li></ul><ul><li>Automatically build and test </li></ul><ul><li>Generate report & notify </li></ul><ul><li>Deploy </li></ul><ul><li>Distributed build </li></ul>
    16. 16. Jenkins Requirement <ul><li>Web Server (Tomcat, WebLogic, …) </li></ul><ul><li>Build tool (Maven, Ant) </li></ul><ul><li>SCM (Git, Svn, Cvs, …) </li></ul>
    17. 17. Jenkins Plugins <ul><li>Build triggers </li></ul><ul><li>Source code management </li></ul><ul><li>Build tools </li></ul><ul><li>Build wrappers </li></ul><ul><li>Build notifiers </li></ul><ul><li>Build reports </li></ul><ul><li>Artifact uploaders </li></ul><ul><li>UI plugins </li></ul><ul><li>Authentication and user management </li></ul>
    18. 18. Build Trigger <ul><li>Manually click build button </li></ul><ul><li>Build periodically </li></ul><ul><li>Build whenever a SNAPSHOT dependency is built </li></ul><ul><li>Build after other projects are built </li></ul><ul><li>Poll SCM </li></ul><ul><li>IRC, Jabber, … </li></ul>
    19. 19. Get Source Code (1/2) <ul><li>CVS (build-in) </li></ul><ul><li>SVN (build-in) </li></ul><ul><li>GIT (requires Git) </li></ul><ul><li>ClearCase (requires ClearCase) </li></ul><ul><li>Mercurial, PVCS, VSS, … </li></ul>
    20. 20. Get Source Code (2/2) <ul><li>Get current snapshot </li></ul><ul><li>Get baseline (tag) </li></ul>
    21. 21. Code Change History
    22. 22. Build Tools <ul><li>Java </li></ul><ul><ul><li>Maven (build-in), Ant, Gradle </li></ul></ul><ul><li>.Net </li></ul><ul><ul><li>MSBuild, PowerShell </li></ul></ul><ul><li>Shell script </li></ul><ul><ul><li>Python, Ruby, Groovy </li></ul></ul>
    23. 23. Build Wrapper <ul><li>Build name (version no) setter </li></ul><ul><li>Virtual machine (VMWare, Virtual Box) </li></ul><ul><li>Set environment variable </li></ul><ul><li>ClearCase release plugin </li></ul><ul><li>… </li></ul>
    24. 24. Build Notifier <ul><li>E-mail </li></ul><ul><li>Twitter </li></ul><ul><li>Jabber </li></ul><ul><li>IRC </li></ul><ul><li>RSS </li></ul><ul><li>Google calendar </li></ul><ul><li>… </li></ul>
    25. 25. Build Report <ul><li>Static Code Analysis </li></ul><ul><ul><li>Checkstyle, PMD, Findbugs, Compiler Warning </li></ul></ul><ul><li>Test Report & Code Coverage </li></ul><ul><ul><li>JUnit, TestNG, Cobertura, Clover </li></ul></ul><ul><li>Open Tasks </li></ul>
    26. 26. Static Code Analysis
    27. 27. CheckStyle
    28. 28. FindBugs
    29. 29. Open Tag
    30. 30. Duplicate Code
    31. 31. Test Report
    32. 32. Test Code Coverage <ul><li>Ref: http://cobertura.sourceforge.net/sample/ </li></ul>
    33. 33. Artifact uploaders <ul><li>Tomcat </li></ul><ul><li>JBoss </li></ul><ul><li>Glassfish </li></ul><ul><li>WebSphere </li></ul><ul><li>FTP </li></ul><ul><li>SSH </li></ul>
    34. 34. UI Enhancement <ul><li>Dashboard </li></ul><ul><li>Sectioned view </li></ul><ul><li>iPhone/Android </li></ul>
    35. 35. Security Management <ul><li>Security Realm </li></ul><ul><ul><li>LDAP </li></ul></ul><ul><ul><li>Jenkins's own user database </li></ul></ul><ul><ul><li>Delegate to servlet container </li></ul></ul><ul><li>Authorization </li></ul><ul><ul><li>Anyone can do anything </li></ul></ul><ul><ul><li>Logged-in users can do anything </li></ul></ul><ul><ul><li>Matrix-based security </li></ul></ul><ul><ul><li>Project-based Matrix Authorization Strategy </li></ul></ul><ul><ul><li>Legacy mode </li></ul></ul>
    36. 36. Security Management <ul><li>Matrix-based security </li></ul><ul><li>Project-based Matrix Authorization </li></ul>
    37. 37. Security Management Plugins <ul><li>Active directory, OpenID, MySQL, … </li></ul><ul><li>Role based privilege control </li></ul>
    38. 38. Plugin Usage Statistics <ul><li>Ref: http://jenkins-ci.org/content/updated-usage-stats-available </li></ul>
    39. 39. Features Not Mentioned <ul><li>Matrix project </li></ul><ul><li>Distributed build </li></ul>
    40. 40. Demo
    41. 41. Questions & Answers
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×