[Engine-devel] How to utilize Jenkins to do your dirty (build) work for you...

Mike Kolesnik mkolesni at redhat.com
Tue Mar 27 15:02:52 UTC 2012


> On 03/26/2012 04:08 PM, Mike Kolesnik wrote:
> > Hi,
> > 
> > 
> > -- Intro --
> >   When working on your local GIT repo you probably do a lot of:
> >     mvn clean install
> > 
> >   Additionally, if you're working on oVirt-engine you might be
> >   doing some of:
> >     mvn test -Penable-dao-tests
> >     mvn install -Pgwt-admin
> >     etc..
> > 
> >   This, of course, might take your development computer a while,
> >   and hog your resources.
> > 
> >   Usually though, if you work on oVirt, you have a host that you
> >   use for testing your changes..
> >   This host probably has a 2/4 cores CPU and at least 4Gb of RAM..
> > 
> >   This host is sitting quietly most of the time, consuming mostly
> >   electricity but not doing much.
> >   You're probably not even utilizing it that much even when you are
> >   testing something on it.
> >   It is like a powerful guard dog that you keep tied in the
> >   back-yard most of the time, instead of letting it run free.
> > 
> >   Well, I have a suggestion how to put that puppy into good use and
> >   also free up your resources..
> > 
> > -- End Intro --
> > 
> > You can install Jenkins on the host, and have it monitor your local
> > GIT repo for changes, building your commits as necessary.
> > This works with every local branch you have - Jenkins will pick up
> > the change (be it a local commit you just did, or a rebase over
> > the origin) and generate a build for it.
> > 
> > This will allow you to monitor your build results just as you would
> > monitor locally, while in the same time utilize a (probably) more
> > powerful machine to do this for you. It will also probably speed
> > up your build cycle, as builds will be executed in parallel.
> > 
> > I have written an installation guide which explains how to do it in
> > the oVirt wiki:
> >   http://www.ovirt.org/wiki/Local_Jenkins_For_The_People
> > 
> > I have also written a script that will run the installation part on
> > the host for you,
> > so you just need to download the attachment and run it as root on
> > the host, but you will still need to do some manual work so make
> > sure to check the wiki.
> > 
> > -- Example Jobs --
> >   I am also attaching sample jobs to import to Jenkins.
> >   Make sure to replace the GIT repo URL, you can do this before
> >   importing with sed:
> >    # sed -i
> >    's#[git-repo-url]#ssh://[user]@[git-host]/[git-repo-location]#'
> >    oVirt-engine.*
> > 
> >   For example:
> >    # sed -i
> >    's#[git-repo-url]#ssh://mkolesni@myhost/~/git/ovirt-engine#'
> >    oVirt-engine.*
> > 
> >   You can import them with the command:
> >    # cat [job].xml | java -jar /tmp/jenkins-cli.jar -s
> >    http://localhost:8080 create-job [job-name]
> > 
> >   For example:
> >    # cat oVirt-engine.xml | java -jar /tmp/jenkins-cli.jar -s
> >    http://localhost:8080 create-job oVirt-engine
> > -- End Example Jobs --
> > 
> > Of course, this might not be ideal in cases when you need 100%
> > percent of your host..
> > But in such a case you can simply turn off Jenkins, and turn it
> > back on later. ;)
> 
> Great idea.
> One comment -
> I noticed that if u specify */* in "branches to build" then it of
> course
> fetches for you all the branches. If you want to build the current
> branch you're working on - use HEAD instead.

Yes that should work relatively well, but it limits you in the sense that it ONLY monitors the HEAD, while if you use default (** or */*) then it will monitor changes on all branches regardless if you on them or not - it could be a double edged sword if you have a lot of garbage in the repo, but on the other hand it might drive you to clean it :)

> 
> > 
> > 
> > Regards,
> > Mike
> 
> 



More information about the Devel mailing list