Beruflich Dokumente
Kultur Dokumente
Continuous Integration with Jenkins Tutorial
Lars Vogel
Version 1.1
Training
Copyright © 2012, 2013 Lars Vogel
01.05.2013 Books
Revision History
Revision 0.1 - 1.2 27.07.2012 - 01.05.2013 Lars bug fixes and enhancements
Vogel
Jenkins
This article describes how to build a continuous integration cycle for Java development with the Jenkins continuous
integration build server.
Table of Contents
1. Continuous Integration with Jenkins
1.1. Continuous Integration Overview
1.2. Jenkins
1.3. Requirements for using Jenkins
2. Installation
2.1. Installing Jenkins on Ubuntu
2.2. Using native packages on other platforms
2.3. Using the .WAR file of Jenkins
3. Apache Ant, Tomcat
4. Configure Jenkins
4.1. Entering the JDK and your build system
4.2. Secure Jenkins
5. Support for the Git version control systems
6. Setting up a Jenkins job
7. Android Jenkins build job prerequisites
8. Android builds with Jenkins
9. Jenkins backup and copying files
9.1. Jenkins backup and copying files
9.2. Managing Jenkins with Git
10. Support this website
10.1. Thank you
10.2. Questions and Discussion
11. Links and Literature
11.1. Source Code
11.2. CI links
11.3. PDE/Build links
http://www.vogella.com/tutorials/Jenkins/article.html 1/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
1. Continuous Integration with Jenkins
1.1. Continuous Integration Overview
Continuous integration is a process in which all development work is integrated at a predefined time or event and
the resulting work is automatically tested and built. The idea is that development errors are identified very early in
the process.
1.2. Jenkins
Jenkins is one open source tool to perform continuous integration. The basic functionality of Jenkins is to monitor a
version control system and to start and monitor a build system (for example, Apache Ant or Maven) if changes
occur. Jenkins monitors the whole build process and provides reports and notifications to alert maintainers on
success or errors.
Jenkins can be extended by additional plugins, e.g., for building and testing Android applications.
1.3. Requirements for using Jenkins
To use Jenkins you need:
An accessible source code repository, e.g., a Git repository, with your code checked in.
A working build script, e.g., a Maven script, checked into the repository
Jenkins can be started via the command line or can run in a web application server. Under Linux you can also
install Jenkins as system service.
2. Installation
2.1. Installing Jenkins on Ubuntu
Jenkins provides Debian/Ubuntu packages which install Jenkins and register Jenkins as start service. See the
following URL for details.
http://pkg.jenkins-ci.org/debian/
This installs a /etc/init.d/jenkins start script which starts Jenkins automatically at boot time.
If you start it locally, you find it running under the following URL: http://localhost:8080/
2.2. Using native packages on other platforms
For most platforms you have native packages, see the Jenkins Homepage.
2.3. Using the .WAR file of Jenkins
Download the jenkins.war file from Jenkins Homepage.
To run it in your Tomcat server, put the .WAR file into the webapps directory. If you start Tomcat, your Jenkins
installation will be available under http://localhost:8080/jenkins
3. Apache Ant, Tomcat
http://www.vogella.com/tutorials/Jenkins/article.html 2/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
If you want to install Jenkins in a web container, you can use, for example, Tomcat or Jetty. See the Apache
Tomcat Tutorial.
In this example we use Apache Ant to build a simple Java project. Please see the Apache Ant tutorial for details.
We use Git in this example. Please see the Git tutorial for details.
4. Configure Jenkins
4.1. Entering the JDK and your build system
Before using Jenkins you need to tell it where your JDK and ant installation is. Open Jenkins in your browser and
click Manage Jenkins and then Configure System.
Enter the correct path to your JDK, Apache Ant and Maven and press the Save button below. Jenkins can also
install these for your automatically.
http://www.vogella.com/tutorials/Jenkins/article.html 3/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
4.2. Secure Jenkins
It is recommended to secure Jenkins. Manage Jenkins and then Configure Global Security. Select the Enable
security flag. The easiest way is to use Jenkins own user database. Create at least the user "Anonymous" with read
access. Also create entries for the users you want to add in the next step.
On the login page, select Create an account to create the users you just gave access.
http://www.vogella.com/tutorials/Jenkins/article.html 4/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
Go to Manage Jenkins, Manage and Assign Roles and then Assign Roles to grant the newly created user additional
access rights.
Navigate to Manage Roles to define access restrictions in detail. Pattern is a regex value of the job name. The
following grants unregistered users readonly access to your build jobs that start with the C-MASTER or M-MASTER
prefix and only those.
vogella.com Tutorials
Search Training Consulting Books Blog Shop Contact us
5. Support for the Git version control systems
Jenkins supports the Git version control system via a plugin. Select the Manage Jenkins → Manager Plugins link.
Here you have to install the Git Plugin.
To clone a Git repostory via Jenkins you need to enter the email and user name for your Jenkins system. For this
http://www.vogella.com/tutorials/Jenkins/article.html 5/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
switch into your job directory and run the git config command.
# Need to configure the Git email and user for the Jenkins job
6. Setting up a Jenkins job
The build of a project is handled via jobs in Jenkins. Select New Job " and select Freestyle Job to create a new Job
in Jenkins.
7. Android Jenkins build job prerequisites
To create a build job on Jenkins you need to have a working build setup. See Android build tutorial.
8. Android builds with Jenkins
Jenkins supports the automatic building and testing of Android applications. To start your tests on an emulator you
can use the Android Emulator Plugin. The Android Emulator Plugin supporting starting and unlocking and blocks
the build until the emulator has started.
A detailed description of this plugin can be found under the following URL: Android Emulator Plugin Jenkins
page.
To install this plugin use the Manage Jenkins → Manager Plugins link and search for "Android". Select it from the
list and select to install it and restart Jenkins.
Tip
For automated tests it is good practice to have another job which executes the tests.
This job can be connected to the build job of the application so that it runs
automatically after this compile step.
To create an Android build job on Jenkins, select New Job, enter a job name and select the Build a freestyle
software project option.
http://www.vogella.com/tutorials/Jenkins/article.html 6/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
You configure from where the source should be cloned.
You configure the emulator which should be started. Ensure that you do not select the Show emulator window
option, as your build server should not depend on the availability of a display server.
http://www.vogella.com/tutorials/Jenkins/article.html 7/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
Warning
You may see the following error message: "Error: Invalid abi ... for the selected
target" in the log of your job. In this case you have to install the desired Andoid images
manually with the following command.
Use /var/lib/jenkins/tools/androidsdk/tools/android list targets to see what ABIs are
installed. If no are listed manual install one.
Configure the Apache Ant build file, use the Advanced option to specify the location of the build file.
Tip
The Android Emulator Plugin supports a new job with the Build multiconfiguration
project option. This option allows you to test multiple emulator configurations at the
same time. You can, for example, test different languages, densities, screen
resolutions, etc.
Typically you have two Jobs, one for a simple build and test run and a multiconfiguration project to test the build on
different device configurations.
Tip
You can combine Android Emulator Plugin with the AmazonEC2Plugin to run the
build and the tests on several machines simultaneously.
9. Jenkins backup and copying files
9.1. Jenkins backup and copying files
Jenkins stores all the settings, logs and build artifacts in its home directory, for example, in /var/lib/jenkins
under the default install location of Ubuntu.
To create a backup of your Jenkins setup, just copy this directory.
The jobs directory contains the individual jobs configured in the Jenkins install. You can move a job from one
Jenkins installation to another by copying the corresponding job directory. You can also copy a job directory to
clone a job or rename the directory.
Click reload config button in the Jenkins web user interface to force Jenkins to reload configuration from the disk.
See Adminstration of Jenkins for details.
9.2. Managing Jenkins with Git
http://www.vogella.com/tutorials/Jenkins/article.html 8/9
10/21/2014 Continuous Integration with Jenkins - Tutorial
Jenkins supports the https://wiki.jenkinsci.org/display/JENKINS/SCM+Sync+configuration+plugin plugin which
allows you to store every change in a Git repo.
It is also possible to manually maintain the Jenkins configuration in a Git repo.
10. Support this website
This tutorial is Open Content under the CC BYNCSA 3.0 DE license. Source code in this tutorial is distributed
under the Eclipse Public License. See the vogella License page for details on the terms of reuse.
Writing and updating these tutorials is a lot of work. If this free community service was helpful, you can support the
cause by giving a tip as well as reporting typos and factual errors.
10.1. Thank you
Please consider a contribution if this article helped you.
10.2. Questions and Discussion
If you find errors in this tutorial, please notify me (see the top of the page). Please note that due to the high
volume of feedback I receive, I cannot answer questions to your implementation. Ensure you have read the
vogella FAQ as I don't respond to questions already answered there.
11. Links and Literature
11.1. Source Code
Source Code of Examples
11.2. CI links
Homepage of the Jenkins project
Homepage of the Hudson project
11.3. PDE/Build links
PDE Build description (German)
Eclipse PDE/Build
Build and Test Automation for plugins and features
Getting started with PDE/Build
Andrew Niefer: Example Headless build for a RCP product with p2
http://www.vogella.com/tutorials/Jenkins/article.html 9/9