Setting Up Continuous Integration

From sselab

Revision as of 14:11, 15 March 2012 by Kurpick (Talk | contribs)
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

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 Softwareproject that should be build.

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 [3]
  • Code measurement with Sonar in Jenkins (general installation [4] )
    • To measure your code in Jenkins with Sonar you have to install Sonar [5].
    • 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!)[6]
    • 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 [7] 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 [8]

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