0% found this document useful (0 votes)
1K views

Continuous Integration (Jenkins/Hudson)

This document discusses Continuous Integration using Jenkins/Hudson. It begins by explaining what Continuous Integration is and its benefits like improving quality and reducing delivery time. It then covers the history and tools of CI, focusing on Jenkins/Hudson. Key Jenkins/Hudson features include its open source nature, large plugin ecosystem, and security management capabilities. The document demonstrates Jenkins/Hudson's abilities like build triggering, source control integration, building, testing, reporting and deployment.

Uploaded by

Dennys Hsieh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF or read online on Scribd
0% found this document useful (0 votes)
1K views

Continuous Integration (Jenkins/Hudson)

This document discusses Continuous Integration using Jenkins/Hudson. It begins by explaining what Continuous Integration is and its benefits like improving quality and reducing delivery time. It then covers the history and tools of CI, focusing on Jenkins/Hudson. Key Jenkins/Hudson features include its open source nature, large plugin ecosystem, and security management capabilities. The document demonstrates Jenkins/Hudson's abilities like build triggering, source control integration, building, testing, reporting and deployment.

Uploaded by

Dennys Hsieh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF or read online on Scribd
You are on page 1/ 41

Continuous Integration

(Jenkins/Hudson)

Dennys 謝松廷
Agenda
• What’s Continuous Integration
• Jenkins/Hudson
– Features
– Plugin
– Security Management
• Demo
• Q&A
2
What’s Continuous
Integration?
• In software engineering, continuous integration (CI)
implements continuous processes of applying quality
control - small pieces of effort, applied frequently.
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.

Ref: http://en.wikipedia.org/wiki/Continuous_integration

3
History
• Continuous Integration emerged in the Extreme
Programming (XP) community, and XP advocates
Martin Fowler and Kent Beck first wrote about
continuous integration circa 1999.

4
Continuous Integration
• 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.

-- Martin Fowler

Ref: http://martinfowler.com/articles/continuousIntegration.html
5
Why Continuous Integration?
• Integration is hard, effort increase
exponentially with
– Number of components
– Number of bugs
– Time since last integration

Ref: http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson

6
Continuous Integration Benefit
• Project Management
– Detect system development problems earlier
– Reduce risks of cost, schedule, and budget
• Code Quality
– Measurable and visible code quality
– Continuous automatic regression unit test

7
Best Practice of CI
• Single Source Repository.
• Automate the Build and Test
• Everyone Commits Every Day
• Keep the Build Fast
• Everyone can see what's happening
• Automate Deployment (Optional)

8
Continuous Integration Tools

Ref: http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software9
Jenkins/Hudson
What’s Jenkins/Hudson
1. An open source CI server
2. More then 23000 installations (Jul 2010)
3. Plug-in extensibility (Over 370 plugins)
4. MIT license

11
Continuous Integration Overview

Ref: http://www.javaworld.com/javaworld/jw-12-2008/images/CIOverview.jpg 12
CI Tool Usage

• Total vote: 643

• First Vote: 2010/02/12


• Last Vote: 2011/03/08

Ref: http://java.dzone.com/node/28241/results Ref:http://www.wakaleo.com/resources/polls


13
Jenkins v.s.Hudson
• Jenkins: Original Hudson team
• Hudson: Oracle and Sonatype

• Ref: http://jenkins-ci.org/content/hudsons-future

14
Jenkins Features
• Trigger a build
• Get source code from repository
• Automatically build and test
• Generate report & notify
• Deploy
• Distributed build

15
Jenkins Requirement
• Web Server (Tomcat, WebLogic, …)
• Build tool (Maven, Ant)
• SCM (Git, Svn, Cvs, …)

16
Jenkins Plugins
• Build triggers
• Source code management
• Build tools
• Build wrappers
• Build notifiers
• Build reports
• Artifact uploaders
• UI plugins
• Authentication and user management
17
Build Trigger
• Manually click build button
• Build periodically
• Build whenever a SNAPSHOT
dependency is built
• Build after other projects are built
• Poll SCM
• IRC, Jabber, …
18
Get Source Code (1/2)
• CVS (build-in)
• SVN (build-in)
• GIT (requires Git)
• ClearCase (requires ClearCase)
• Mercurial, PVCS, VSS, …

19
Get Source Code (2/2)
• Get current snapshot
• Get baseline (tag)

20
Code Change History

21
Build Tools
• Java
– Maven (build-in), Ant, Gradle
• .Net
– MSBuild, PowerShell
• Shell script
– Python, Ruby, Groovy

22
Build Wrapper
• Build name (version no) setter
• Virtual machine (VMWare, Virtual Box)
• Set environment variable
• ClearCase release plugin
• …

23
Build Notifier
• E-mail
• Twitter
• Jabber
• IRC
• RSS
• Google calendar
• …
24
Build Report
• Static Code Analysis
– Checkstyle, PMD, Findbugs, Compiler
Warning
• Test Report & Code Coverage
– JUnit, TestNG, Cobertura, Clover
• Open Tasks

25
Static Code Analysis

26
CheckStyle

27
FindBugs

28
Open Tag

29
Duplicate Code

30
Test Report

31
Test Code Coverage

Ref: http://cobertura.sourceforge.net/sample/
32
Artifact uploaders
• Tomcat
• JBoss
• Glassfish
• WebSphere
• FTP
• SSH

33
UI Enhancement
• Dashboard
• Sectioned view
• iPhone/Android

34
Security Management
• Security Realm
– LDAP
– Jenkins's own user database
– Delegate to servlet container
• Authorization
– Anyone can do anything
– Logged-in users can do anything
– Matrix-based security
– Project-based Matrix Authorization Strategy
– Legacy mode
35
Security Management
• Matrix-based security

• Project-based Matrix Authorization

36
Security Management Plugins

• Active directory, OpenID, MySQL, …


• Role based privilege control

37
Plugin Usage Statistics

Ref: http://jenkins-ci.org/content/updated-usage-stats-available

38
Features Not Mentioned
• Matrix project
• Distributed build

39
Demo
Questions & Answers

41

You might also like