Table of
Contents
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.
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
plug-ins, e.g., for building and testing Android applications.
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.
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/
For most
platforms you have native packages, see the Jenkins Homepage.
You can
also start Jenkins directly via the command line with java -jar
jenkins*.war. If you
start it locally, you find it running under the following URL: http://localhost:8080/
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
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.
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.
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.
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 read-only access
to your build jobs that start with the C-MASTER or M-MASTER prefix and only those.
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 switch into your job directory and run the git
config command.
# Need to configure the Git email and
user for the Jenkins job
# switch to the job directory
cd /var/lib/jenkins/jobs/Android/workspace
# setup name and email
sudo git config
user.name "jenkins"
sudo git config
user.email "test@gmail.com"
The build
of a project is handled via jobs in Jenkins. Select New Item from the
menu
Afterwards
enter a name for the job and and select Freestyle Job. Press OK to create a new
Job in Jenkins.
The next
page allows you to configure your job. If you for example using Git, enter the
URL to the Git repository. If the repository is not public, you may also need
to configure the credentials.
Specify
when and how your build should be triggered. The following example polls the
Git repository every 15 min and triggers a build, if something has changed in
the repo.
I
typically delete the workspace before a build to avoid any side-effect. In the
Build section you can add a build step, e.g., a Maven build.
Press Save
to finish the job definition. Press Build Now on the job page to validate the
job works as expected.
After a
while the job should go to green or blue (depending on your configuration), if
successful. Click on the job and afterwards on Console Output to see the log
file in case of an error or to validate that log looks as expected.
To create
a build job on Jenkins you need to have a working build setup. See Android build tutorial.
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 plug-in 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 free-style software project option.
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.
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.
// run this as Jenkins user
/var/lib/jenkins/tools/android-sdk/tools/android
update sdk --no-ui
Use
/var/lib/jenkins/tools/android-sdk/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 multi-configuration
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
multi-configuration project to test the build on different device
configurations.
Tip
You can
combine Android Emulator Plugin with the Amazon-EC2-Plug-in to
run the build and the tests on several machines simultaneously.
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.
Jenkins
supports the
https://wiki.jenkins-ci.org/display/JENKINS/SCM+Sync+configuration+plugin
plug-in 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.

No comments:
Post a Comment