Wednesday, May 23, 2012

Jenkins Development by a DevOps Engineer

Contents

Setting Up Eclipse on Ubuntu Linux
I have a Ubuntu Linux running in Virtual Box. It works well, I don’t currently have Eclipse installed so I will be going over that now.  I found the following page, it has step by step instructions:
https://help.ubuntu.com/community/EclipseIDE
Now I’m going to do them in sequence, I will call out any additional information I find helpful. First thing I realized is that it expects you to have working knowledge of the package manager. The following page should help you become familiar with it:
What is a package manager?
I thought I would do this from the command line, since it usually ends in the most beneficial interface for engineers in general. First I will search for the “eclipse” package.
$ apt-cache search eclipse
It prints out a long list of packages that I guess are related to eclipse, I scroll through the output until I come across the following:
eclipse-jdt - Eclipse Java Development Tools (JDT)
Lets try to install that one.
$ sudo apt-get install eclipse-jdt
First thing it does is print out in detail the modifications it will make in detail. Towards the bottom, you’ll find a summary “5 upgraded, 74 newly installed, 0 to remove and 352 not upgraded.” Then it asked me “Do you want to continue [Y/n]?” Well, “Y”, I’d like to continue. Well that took a little while, when I returned I noted the execution of the command had completed, but now a dialog to make updates was present:
image
Ok, well since I’m updating anyways, lets go ahead and see if I can get my system up to date. Still going…this could be a while. Looks like my internet connection dropped half way through, I’ll try to get the rest. Failed again, lets try to exclude those updates:
image
Well that didn’t work, well for whatever reason I can’t get anymore updates right now, the internet is working but getting updates isn’t.  Regardless back to working on Eclipse. So I navigated to the “/usr/bin” folder and ran “eclipse”, and it started up. Great. I created my initial workspace “EclipseWorkspace”.

Overview
The steps I’m using come from the Jenkins online help for building and setting up the development environment, you can find that page here: Building Jenkins

Building the Code
JDK 1.6 (version greater than 6u17) from Oracle
When I ran “$ java –version” on my system I received the following message:
OpenJDK Runtime Environment (IcedTea6 1.11pre) …
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)
I now need to switch this to use JDK from Oracle. I found these steps online, they are simple enough to just include in this post. Download the “tar.gz” file from Oracle. In my case I downloaded “jdk-7u3-linux-i586.tar.gz”.  It got downloaded to my “downloads” directory.  I navigated to that folder in the terminal and ran the following:
$ tar –xvf jdk-7u3-linux-i586.tar.gz
Then I moved the folder “jdk1.7.0_03” to its permanent location:
$ sudo mv ./jdk1.7.0_03 /usr/lib/jvm/jdk1.7_03
Now I set up the “update-alternatives”. I found useful information about this technology on the following man page.
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7_03/bin/java" 1 

$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7_03/bin/javac" 1 

$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7_03/bin/javaws" 1
Next we configure java,javac, and javaws:
sudo update-alternatives --config java   #also run with javac and javaws
When prompted select the newly installed java version. Finally run “java –version”
saasbook@saasbook:~/Downloads$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode)
All that “update-alternatives” technology is great, however there is still a dependency on the JAVA_HOME environment variable that will need to be set. Add it to “/etc/environment” (Remember to do so using “sudo”)
JAVA_HOME=/usr/lib/jvm/jdk1.7_03

Maven 3.x
Download the latest version from the Maven Website. I downloaded “apache-maven-3.0.4-bin.tar.gz”. On the same page are a series of instructions that I go over here with any additional items I came across.
Create a parent directory for all maven versions “/usr/local/apache-maven”. Next extract the archive and move it, by using the following commands:
$ tar –xvf apache-maven-3.0.4-bin.tar.gz
$ sudo mv apache-maven-3.0.4 /usr/local/apache-maven
Next you will need to setup the environment variables, there is an article I found useful in explaining this at “Linux Environment Variables”. Add the following to the “/etc/environment” file (Remember to do so using “sudo”):
M3_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M3=/usr/local/apache-maven/apache-maven-3.0.4/bin
MAVEN_OPTS=”-Xms256m –Xmx512m”
After modifying the “/etc/environment” file you can run the following to immediately update the environment:
$ source environment



Clone Repository from Jenkins

I navigated to the workspace “~/EclipseWorkspace” I created earlier. Once inside the directory I run the command to get a clone of  Jenkins repository:
$ git clone https://github.com/jenkinsci/jenkins.git
$ cd jenkins
$ mvn -Plight-test install

Making the Jenkins source code usable in Eclipse
You need to create the eclipse project files. You do so by the following:
$ mvn -DdownloadSources=true eclipse:eclipse
Next set the classpath variable for M2_HOME = “~/.m2/repository”:
image
Then you can import from the jenkins directory which is in the workspace:
image
image

Debugging Jenkins
At this point if you were following the directions you would be in the “jenkins” folder. From here you do the following:
$ cd war
$ mvnDebug hudson-dev:run
It will put a message on the screen as follows:
Preparing to Execute Maven in Debug Mode
Listening for transport dt_socket at address: 8000
Now open a remote debugging session from within Eclipse:
image
After you press Debug you will be able to see the Eclipse IDE running jenkins and also navigate to the jenkins website:
image