Setting Up Continuous Integration

From sselab

Jump to: navigation, search

Contents

About Continuous Integration

Manual Installation

Getting a server for your Continuous Integration

  • Inside the RWTH you can order a virtual machine from the NOC Hosting of institute servers and RZ-Shop
  • Outside you could use common cloud providers that offer virtual machines

Continuous Integration with Jenkins for Ubuntu servers

At this point we assume that you have access to a server for your continuous integration. The following software component should be installed on this server:

  • You need to have a ssh server installed and configured. open-ssh-server are suggested.
  • You need to have a JDK and JRE installed. openjdk-6-jre and openjdk-6-jdk are suggested.

Installation

Standalone
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo aptitude update
sudo aptitude install jenkins
  • more information can be found here [1]
  • general information and different installation of Jenkins [2]

Now you can access Jenkins via the Homepage (e.g. http://localhost:8080/jenkins) configure general settings and create your first job. In Jenkins a job is a software project that should be build.

Inside Tomcat

Install Tomcat6

sudo aptitude update
sudo aptitude install tomcat

Configure Tomcat6 for port 80, change /etc/tomcat6/server.xml

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              URIEncoding="UTF-8"
              redirectPort="8443" />

to

<Connector port="80" protocol="HTTP/1.1"
              connectionTimeout="20000"
              URIEncoding="UTF-8"
              redirectPort="8443" />

Authbind is not enabled by default. You will find the following section in the /etc/default/tomcat6 file:

# If you run Tomcat on port numbers that are all higher than 1023, then you
# do not need authbind.  It is used for binding Tomcat to lower port numbers.
# NOTE: authbind works only with IPv4.  Do not enable it when using IPv6.
# (yes/no, default: no)
#AUTHBIND=no

Change last line to:

AUTHBIND=yes

Download and deploy latest jenkins release:

wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
sudo cp jenkins.war /var/lib/tomcat6/webapps/

Create JENKINS_HOME directory:

cd /usr/share/tomcat6
sudo mkdir .jenkins
sudo chown tomcat6:nogroup .jenkins

Restart tomcat with new configuration:

sudo service tomcat6 restart

References: [3] [4]

Configuration

  • Choose for your Job a Name and the "Free-Style" Type of the Job. After that step a new Job is created and you can configure this Job.
    • For "Source-Code-Management" choose Subversion. The Repository URL is something like: sselab.de/lab2/private/svn/<SSELAB-Prjoject-Name>/trunk/.
    • In the next two steps you have to configure when and how the project should be compiled. For CI you should select "Poll SCM". If you want to compile your source code with Apache Ant, you can define the Ant targets and files under Build-Invoke Ant.
    • You can define some additional Post-build Actions like: run JUnit, measure Code Quality with Sonar, write some Emails.
  • more information can be found here [5]
  • Code measurement with Sonar in Jenkins (general installation [6] )
    • To measure your code in Jenkins with Sonar you have to install Sonar [7].
    • After downloading your copy of Sonar, you can configure the basic sonar settings like the used DB-Server. Since the default settings meet our actual needs (and no external Database has to be configured) we can directly compile the war-Archive.
    • Do so with executing the build-war file in /sonar-2.1.13.1/war/ of the downloaded ZIP-Archive. As the next step you have to deploy that WAR-File on your JEE-Server. (Be advised that Glassfish and JBoss is not officially supported!)[8]
    • Now you can browse to your local Sonar installation (on e.g. http://localhost:8080/sonar).
    • In the next step you have to install the Sonar plug-in in your Jenkins, configure the plug-in in the global Jenkins settings (http://localhost:8080/jenkins/configure/ ) and activate that plug-in for your job in Jenkins.
    • it might be necessary for sonar to increase the available heapspace (see next section Improvements)
  • Improvements
    • increase available Heapspace for Jenkins and Sonar in Glassfish
    • configure Sonar with an external Database like Postgres or MySQL to gain more speed during Code measurement
    • secure Jenkins [9] and Sonar with username/password access
    • all processes started during a build of Jenkins are killed by Jenkins after the build, so be careful with starting anything that should run even after the build finishes [10]

Automated Usage

  • Coming soon as a Sselab service

Send feedback to extend this description

Please contact us if you have question concerning the usage of the services. We are also curious about new ideas for additional services and new usage scenarios. Send us a message over the contact form or write us an email


  • This page was last modified on 16 October 2012, at 17:17.
  • This page has been accessed 54,813 times.