VRealize Code Stream – vRCS 1.0 – Laying the foundation with Git and Jenkins Part 1

I realize many of you looking to understand what Code Stream can do to help you with your Continuous Integration needs already have Git Jenkins and a whole ton of other tools. However for those who don’t yet have anything in place or for those who are looking to get a better understanding of where it fits into the mix I am going to walk through some simple setup examples to get you up and going.  To start we need to have two foundational elements in place; Git and Jenkins.

As part of the Git setup I’m going to help you get Git in place and tie your IDE (Eclipse) into Git for publishing code check-ins to your repository.  Then we will deploy a Jenkins server and integrate both Git with Jenkins to create simple builds that we can use with Code Stream.

What we need to get started

To begin we will need to have two servers deployed in the environment.  The first will be got Git and the second for Jenkins.  In my lab I deployed Centos 6.3 because I already had a template available.  I would recommend you have these deployed and ready.

 

Deploying a Git Server

I choose to use GitLab community edition for my Git server.  It seemed to offer the most options and flexibility for the lab.  The gitlab community edition is available at https://about.gitlab.com/downloads/.

Once you choose the version that appropriate for your OS version the installation is pretty simple.  Gitlab provides you with basic installation steps which as pretty straight forward.  Those installation steps for Centos 6 are:

Install Dependencies

sudo yum install openssh-server
sudo yum install postfix
sudo yum install cronie
sudo service postfix start
sudo chkconfig postfix on
sudo lokkit -s http -s ssh

Download and Install Omnibus package

curl -O https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-7.7.2_omnibus.5.4.2.ci-1.el6.x86_64.rpm
sudo rpm -i gitlab-7.7.2_omnibus.5.4.2.ci-1.el6.x86_64.rpm

 

Configure and start GitLab Server

sudo gitlab-ctl reconfigure

 

Connect to Gitlab server and login

Navigate to your Gitlab server in your browser by IP or hostname on port 80 and login using:

Username: root

Password: 5iveLife

When you login you will need to change the password and if you like you can go ahead and create other accounts for use on the gitlab server.

Deploying a Jenkins Server

Jenkins much like Git is simple to install.  You can find the instructions at https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions.  I will provide a basic run down below, but I recommend looking at the Jenkins page as there is some additional good info there.

Installation

Add the Jenkins repository to the yum repos, and install Jenkins from here.

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm –import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins

Installation of a stable version

There is also a LTS YUM repository for LTS Release Line

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm –import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.key
sudo yum install jenkins

Install of Java

Jenkins requires Java in order to run, yet certain Fedora-based distros don’t include this by default. To install the Open Java Development Kit (OpenJDK) run the following:

sudo yum install java

Note: If running CentOS, ensure you follow the guide below.
Start/Stop

sudo service jenkins start/stop/restart
sudo chkconfig jenkins on

 

Configuring  the GitLab Server

Next it’s important to get a project setup in our GitLab server that we can use throughout the rest of our examples.  Your project can be anything that you want it to be.  I’m going to use this blog as my project.  I am going to load all the source php files for dailyhypervisor which is based on WordPress. We will then configure eclipse to use the git repo as a source repository.

1. Login to your Gitlab server and create a new project by selecting Project in the upper right corner.

image

2. On the new project screen set a “Project path” which for all intensive purposes can just be a name for the project.  Set the namespace which for my project I choose my namespace, set a description and then the visibility level.  I have chosen public for my visibility level for no other reason than laziness.  I have done this so i don’t have to spend the time setting up the authentication and SSh keys and all that goes with it.  You can certainly do so if you like and use internal or private. (Remember this is a private server in my lab so I’m not concerned about access to the repository.)

image

3. Once you create the project you will be brought to a page that has information about your new project.  At the top of the page below “New Service” you will see the connection url for the project.  You can get either the SSH or HTTP connection url.  (You may notice that my connection URL show “SomeNewService.git” and not “dailyhypervisor.git” and that is because this screenshot was an example I took after I created the dailyhypervisor project.  Your url should have the name of your project path.)

image

4. The next thing we want to do is connect eclipse to the git repository.  I found a pretty decent video on you tube that walks through getting eclipse setup for use with git.  Use this video to get your eclipse ide setup for git and I will walk through how to adda new project to eclipse and set it up for git below.  (Note I’m not going to walk through how to enable git support in eclipse you will need to watch the video for that portion.)  The video is available at https://www.youtube.com/watch?v=r5C6yXNaSGo.

5. In eclipse go to File –> New –> Project.  When the dialog appears select General –> Project and click next.

image

6. On the next screen give your project a name and click finish.

image

7. Now that we have a new project in eclipse we need to add some content to the project.  For me I simply opened up the folder in finder where I had downloaded the dailyhypervisor files to and did a drag and drop from finder in to the project in the eclipse UI.

image

8. Next Right click on the project got to Team –> Share Project.

image

9.  Select Git and click next

image

10. Select Create to create a new repository.

image

11. Input a path for the local repository and click finish.

image

12.  Click finish again.  Once you click finish eclipse will move your files in your project to this new location.

image

13. Notice in PHP Explorer that the project now has the local Repo name with NO-HEAD after it.  This is because we still need to connect the project to the Git repository.

image

14.  Now right click on the project go to Team –> Commit to commit the changes to the new repository.

image

15. Enter a Message then select the files you would like to commit.  I selected the select all check box to commit everything.  Then click commit.

image

16. In the Git Repositories pane expand your project.  You will see a item called Remotes.  Right click on remotes and select Create Remotes

image

17. Leave the defaults and select OK

image

18. Select Change

image

19. Paste in your http uri from gitlab.  It will auto-populate most of the fields for you.  Just input your gitlab username and password and click finish.

image

20. Next Select Advanced.

image

21. Select Master from the Source ref: drop down and then select “Add Spec” button, then click finish.

image

22. Select “Save ad Push”

image

23. You will then see eclipse push the project file to the git project.

image

24. If you go back to our GitLab server and look at the project we will see the push.

image

25.  We now need to configure the fetch.  In the Git Repositories pane navigate to your_project –> Remotes –> Origin –> and right clock on the entry with the green arrow and select Configure fetch.

image

26. Select Advanced

image

27. Select master from the Source ref drop down, clik Add Spec and click finish.

image

28. Finally click Save and Fetch.

image

 

Now that eclipse is setup to use your GitLab repository you can edit code and check it in as well as pull down code that may have been updated from someone or someone else.  Just remember when you update a file first save it, the do a commit and push.  You can do it as one action or two separate actions.  Doing COmmit will commit the changes to your local repository and push will send it to the git server.  There is a lot more to know about source control with git and it’s outside the scope of this article, but this should get you started.

Check back for Part 2 where we will be connecting Jenkins to the Git repository and performing a basic build of the project.

Leave a Reply