
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