--=_d543864b-a903-4efd-9bb5-a1966dfe6475
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
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. ;)
Regards,
Mike
--=_d543864b-a903-4efd-9bb5-a1966dfe6475
Content-Type: application/x-shellscript; name=jenkins.sh
Content-Disposition: attachment; filename=jenkins.sh
Content-Transfer-Encoding: base64
IyEgL2Jpbi9iYXNoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTIgUmVkIEhhdCwgSW5jLgojCiMgTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoj
CiMgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoj
CiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoj
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCgp1c2FnZSgpIHsKIyAgICBlY2hvICJV
c2FnZTogJHtNRX0gWy1oXSAtcyBTRVJWRVJOQU1FIC11IFVTRVJOQU1FIFstdl0iCiAgICBlY2hv
ICJVc2FnZTogJHtNRX0gWy1oXSBbLWZdIFstdl0iCiAgICBlY2hvICIiCiMgICAgZWNobyAiICAt
cyBTRVJWRVJOQU1FIC0gVGhlIElQL0ZRRE4gZm9yIHRoZSBHSVQgc2VydmVyLiAgICAgICAgICAg
KGVnIHlvdXIgbWFjaGluZSkiCiMgICAgZWNobyAiICAtdSBVU0VSTkFNRSAgIC0gVGhlIHVzZXIg
eW91IGFyZSB1c2luZyBvbiB0aGUgR0lUIHNlcnZlci4gKGVnIHlvdXIgdXNlcikiCiAgICBlY2hv
ICIgIC12ICAgICAgICAgICAgLSBUdXJuIG9uIHZlcmJvc2l0eS4iCiAgICBlY2hvICIgIC1mICAg
ICAgICAgICAgLSBVc2UgZm9yY2UgKGRvbid0IHN0b3AgaWYgYSBjcml0aWNhbCBzdGVwIGZhaWxz
KS4iCiAgICBlY2hvICIgIC1oICAgICAgICAgICAgLSBUaGlzIGhlbHAgdGV4dC4iCiAgICBlY2hv
ICIiCgogICAgZXhpdCAwCn0KCmZ1bmN0aW9uIHByaW50U3VjY2VzcyB7CiAgICBpZiBbICQyID0g
MCBdCiAgICB0aGVuCiAgICAgICAgc3VjY2Vzc1N0cj0nW1NVQ0NFU1NdJwogICAgZWxzZQogICAg
ICAgIHN1Y2Nlc3NTdHI9J1tGQUlMRURdJwogICAgZmkKCiAgICBsaW1pdD0kKGVjaG8gNzkgLSAk
KCBlY2hvICRzdWNjZXNzU3RyIHwgd2MgLW0pIHwgYmMpCiAgICBzdGFydD0kKGVjaG8gMSArICQo
ZWNobyAkMSB8IHdjIC1tKSB8IGJjKQoKICAgIGVjaG8gLW4gJDEnICcKCiAgICBmb3IgaSBpbiBg
c2VxICRzdGFydCAkbGltaXRgOwogICAgZG8KICAgICAgICBlY2hvIC1uICcuJwogICAgZG9uZQoK
ICAgIGVjaG8gJyAnJHN1Y2Nlc3NTdHIKfQoKZnVuY3Rpb24geXVtSW5zdGFsbCB7CiAgICB5dW0g
aW5zdGFsbCAkVkVSQk9TRSAteSAkMQoKICAgIHN1Y2Nlc3M9JD8KICAgIHByaW50U3VjY2VzcyAi
SW5zdGFsbGVkICQxIiAkc3VjY2Vzcwp9CgpmdW5jdGlvbiBzdGFydFNlcnZpY2UgewogICAgY2hr
Y29uZmlnICQxIG9uCiAgICBzdWNjZXNzPSQ/CiAgICBwcmludFN1Y2Nlc3MgIkVuYWJsZWQgJDEg
c2VydmljZSBvbiBzdGFydC11cCIgJHN1Y2Nlc3MKCiAgICBpZiBbICRzdWNjZXNzIF0KICAgIHRo
ZW4KICAgICAgICBzZXJ2aWNlICQxIHN0YXJ0CiAgICAgICAgc3VjY2Vzcz0kPwogICAgICAgIHBy
aW50U3VjY2VzcyAiU3RhcnRlZCAkMSBzZXJ2aWNlIiAkc3VjY2VzcwogICAgZmkKfQoKZnVuY3Rp
b24gaW5zdGFsbFBsdWdpbiB7CiAgICBqYXZhIC1qYXIgL3RtcC9qZW5raW5zLWNsaS5qYXIgLXMg
aHR0cDovL2xvY2FsaG9zdDo4MDgwIGluc3RhbGwtcGx1Z2luICQxCiAgICBwcmludFN1Y2Nlc3Mg
Ikluc3RhbGxlZCBKZW5raW5zICQxIHBsdWdpbiIgJD8KfQoKVkVSQk9TRT0nLXEnCndoaWxlIGdl
dG9wdHMgOmhmdiBvcHRpb247IGRvCiAgICBjYXNlICRvcHRpb24gaW4KIyAgICAgICAgcykgU0VS
VkVSTkFNRT0kT1BUQVJHOzsKIyAgICAgICAgdSkgVVNFUk5BTUU9JE9QVEFSRzs7CiAgICAgICAg
dikgVkVSQk9TRT0nJzs7CiAgICAgICAgZikgRk9SQ0U9dHJ1ZTs7CiAgICAgICAgaCkgdXNhZ2U7
OwogICAgZXNhYwpkb25lCgojaWYgW1sgIiRTRVJWRVJOQU1FIiA9ICcnIHx8ICIkVVNFUk5BTUUi
ID0gJycgXV0KI3RoZW4KIyAgICBlY2hvICJFUlJPUjogT25lIG9yIG1vcmUgcmVxdWlyZWQgcGFy
YW1ldGVycyBhcmUgbWlzc2luZy4iCiMgICAgdXNhZ2UKI2ZpCgoKZWNobyAiSW5zdGFsbGluZyBw
cmUtcmVxdWlzaXRlczoiCmVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09IgoKeXVtSW5z
dGFsbCBudHAKCmlmICFncmVwICIxMC41LjI2LjEwIiAvZXRjL250cC5jb25mICY+IC9kZXYvbnVs
bAp0aGVuCiAgICBlY2hvICJcbnNlcnZlciAxMC41LjI2LjEwICMgQWRkZWQgYnkgamVua2lucyBp
bnN0YWxsIHNjcmlwdC5cbiIgPj4gL2V0Yy9udHAuY29uZgogICAgcHJpbnRTdWNjZXNzICJBZGRl
ZCB3b3JraW5nIE5UUCBzZXJ2ZXIiICQ/CmZpCgoKeXVtSW5zdGFsbCBqYXZhCnl1bUluc3RhbGwg
Z2l0CgppZiBncmVwIEZlZG9yYSAvZXRjL3JlZGhhdC1yZWxlYXNlICY+IC9kZXYvbnVsbAp0aGVu
CiAgICB5dW1JbnN0YWxsIG1hdmVuCmVsc2UKICAgIHJwbSAtVXZoIGh0dHA6Ly9kb3dubG9hZC5m
ZWRvcmFwcm9qZWN0Lm9yZy9wdWIvZXBlbC82L2kzODYvZXBlbC1yZWxlYXNlLTYtNS5ub2FyY2gu
cnBtCiAgICB3Z2V0ICRWRVJCT1NFIC1PIC9ldGMveXVtLnJlcG9zLmQvZXBlbC1hcGFjaGUtbWF2
ZW4ucmVwbyBodHRwOi8vcmVwb3MuZmVkb3JhcGVvcGxlLm9yZy9yZXBvcy9kY2hlbi9hcGFjaGUt
bWF2ZW4vZXBlbC1hcGFjaGUtbWF2ZW4ucmVwbwogICAgeXVtSW5zdGFsbCBhcGFjaGUtbWF2ZW4K
ZmkKCnl1bUluc3RhbGwgcG9zdGdyZXNxbC1zZXJ2ZXIKeXVtSW5zdGFsbCBwb3N0Z3Jlc3FsLWNv
bnRyaWIKCmlmIFsgIiQocnBtIC1xIHBvc3RncmVzcWwgfCBjdXQgLWYyIC1kJy0nIHwgY3V0IC1m
MSAtZCcuJykiID0gIjgiIF0KdGhlbgogICAgc3UgLSBwb3N0Z3JlcyAtYyAnaW5pdGRiIC1VIHBv
c3RncmVzIC1EIC92YXIvbGliL3Bnc3FsL2RhdGEvJwplbHNlCiAgICBzdSAtIHBvc3RncmVzIC1j
ICdwZ19jdGwgaW5pdGRiJwpmaQoKcHJpbnRTdWNjZXNzICJJbml0aWFsaXplZCBEQiIgJD8KCmVj
aG8gIiIKZWNobyAiSW5zdGFsbGluZyBKZW5raW5zIENJOiIKZWNobyAiPT09PT09PT09PT09PT09
PT09PT09PSIKCndnZXQgJFZFUkJPU0UgLU8gL2V0Yy95dW0ucmVwb3MuZC9qZW5raW5zLnJlcG8g
aHR0cDovL3BrZy5qZW5raW5zLWNpLm9yZy9yZWRoYXQvamVua2lucy5yZXBvCgpwcmludFN1Y2Nl
c3MgJ0Rvd25sb2FkZWQgSmVua2lucyByZXBvJyAkPwoKcnBtIC0taW1wb3J0IGh0dHA6Ly9wa2cu
amVua2lucy1jaS5vcmcvcmVkaGF0L2plbmtpbnMtY2kub3JnLmtleQoKcHJpbnRTdWNjZXNzICdJ
bXBvcnRlZCBKZW5raW5zIFJQTSBrZXknICQ/Cgp5dW1JbnN0YWxsIGplbmtpbnMKCmlmIFtbICIk
c3VjY2VzcyIgIT0gIjAiICYmICEkRk9SQ0UgXV0KdGhlbgogICAgZWNobyAiRkFUQUw6IENhbid0
IGluc3RhbGwgSmVua2lucywgZXhpdGluZy4iCiAgICBleGl0IDEKZmkKCnN0YXJ0U2VydmljZSBq
ZW5raW5zCgppZiBbWyAiJHN1Y2Nlc3MiICE9ICIwIiAmJiAhJEZPUkNFIF1dCnRoZW4KICAgIGVj
aG8gIkZBVEFMOiBDYW4ndCBzdGFydCBKZW5raW5zIHNlcnZpY2UsIGV4aXRpbmcuIgogICAgZXhp
dCAxCmZpCgojc3UgLSAtcyAvYmluL2Jhc2ggLWMgInNzaCAtbyAnU3RyaWN0SG9zdEtleUNoZWNr
aW5nIG5vJyAkVVNFUk5BTUVAJFNFUlZFUk5BTUUgJ2VjaG8gU3VjY2VzcyA+IC9kZXYvbnVsbCci
IGplbmtpbnMKCiNwcmludFN1Y2Nlc3MgIkFkZGVkIHNlcnZlciAkU0VSVkVSTkFNRSB0byBrbm93
biBob3N0cyBsaXN0IiAkPwoKI3N1IC0gLXMgL2Jpbi9iYXNoIC1jICJpZiBbICEgLWUgfi8uc3No
L2lkX3JzYS5wdWIgXTsgdGhlbiBzc2gta2V5Z2VuIC1xIC10IHJzYTsgZmkgJiYgc3NoLWNvcHkt
aWQgJFVTRVJOQU1FQCRTRVJWRVJOQU1FIiBqZW5raW5zCgojcHJpbnRTdWNjZXNzICJHZW5lcmF0
ZWQgJiBkZXBsb3llZCBTU0ggcHVibGljLWtleSIgJD8KCgplY2hvICIiCmVjaG8gIkluc3RhbGxp
bmcgSmVua2lucyBQbHVnaW5zOiIKZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09IgoK
ZWNobyAiV2FpdCAzMHMgZm9yIGplbmtpbnMgdG8gZ28gdXAuLiIKc2xlZXAgMzBzCgp3Z2V0ICRW
RVJCT1NFIC1PIC90bXAvamVua2lucy1jbGkuamFyIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9qbmxw
SmFycy9qZW5raW5zLWNsaS5qYXIKCnByaW50U3VjY2VzcyAiRG93bmxvYWRlZCBKZW5raW5zIENM
SSIgJD8KCndnZXQgJFZFUkJPU0UgLU8gL3RtcC9qZW5raW5zLXVwZGF0ZS1jZW50ZXIudG1wIGh0
dHA6Ly91cGRhdGVzLmplbmtpbnMtY2kub3JnL3VwZGF0ZS1jZW50ZXIuanNvbgoKdGFpbCAtbiAr
MiAvdG1wL2plbmtpbnMtdXBkYXRlLWNlbnRlci50bXAgfCBoZWFkIC1uIC0xID4gL3RtcC9qZW5r
aW5zLXVwZGF0ZS1jZW50ZXIuanNvbgoKY3VybCAtWCBQT1NUIC1kIEAvdG1wL2plbmtpbnMtdXBk
YXRlLWNlbnRlci5qc29uIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC91cGRhdGVDZW50ZXIvYnlJZC9k
ZWZhdWx0L3Bvc3RCYWNrCgpwcmludFN1Y2Nlc3MgIlxuSW5pdGlhbGl6ZWQgSmVua2lucyB1cGRh
dGUgY2VudGVyIiAkPwoKaW5zdGFsbFBsdWdpbiBnaXQKaW5zdGFsbFBsdWdpbiBjaGVja3N0eWxl
Cmluc3RhbGxQbHVnaW4gZmluZGJ1Z3MKaW5zdGFsbFBsdWdpbiBidWlsZC1uYW1lLXNldHRlcgpp
bnN0YWxsUGx1Z2luIHNhZmVyZXN0YXJ0CgpqYXZhIC1qYXIgL3RtcC9qZW5raW5zLWNsaS5qYXIg
LXMgaHR0cDovL2xvY2FsaG9zdDo4MDgwIHNhZmUtcmVzdGFydAoKcHJpbnRTdWNjZXNzICJSZXN0
YXJ0ZWQgSmVua2lucyBhZnRlciBwbHVnaW5zIGluc3RhbGxlZCIgJD8KCmVjaG8gIkplbmtpbnMg
c2hvdWxkIG5vdyBiZSBpbnN0YWxsZWQgJiB3b3JraW5nLCBlbmpveSEiCgpleGl0IDAKCg==
--=_d543864b-a903-4efd-9bb5-a1966dfe6475
Content-Type: application/x-compressed-tar; name=oVirt-engine.jobs.tar.gz
Content-Disposition: attachment; filename=oVirt-engine.jobs.tar.gz
Content-Transfer-Encoding: base64
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
--=_d543864b-a903-4efd-9bb5-a1966dfe6475--