Translate

Chủ Nhật, 18 tháng 5, 2014

Mô hình phát triển Continuous Integration với Jenkins

This article describes how to build a continuous integration cycle for Java development with the Jenkins continuous integration build server.

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 plug-ins, 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.
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

3. Apache Ant, Tomcat

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.
Jenkins at first startup
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.
Configuring Jenkins

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.
Access restrictions
On the login page, select Create an account to create the users you just gave access.
Create Jenkins account
Sign up a new Jenkins user
Go to Manage JenkinsManage and Assign Roles and then Assign Roles to grant the newly created user additional access rights.
Sign up a new Jenkins user
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.
Sign up a new Jenkins user

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 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" 

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 build with Jenkins

The Android Emulator Plugin can be installed from the Manage Jenkins → Manager Plugins link.
The description of this plugin can be found under the following URL: Android Emulator Plugin.
Android Emulator Plugin starts an AVD if required, blocks the build until the emulator has started and unlocked the screen of the device.
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 projectoption.
Create new Jenkins job
You configure from where the source should be cloned.
Create new Jenkins job
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.
Android emulator settings
Configure the Apache Ant build file, use the Advanced option to specify the location of the build file.
Apache Ant build file for Jenkins Android build

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. 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

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.

Ref:

Không có nhận xét nào:

Đăng nhận xét