Steps for creating new job
Go to http://hudson.qa.jboss.com (you have to be behind redhat vpn to access the page).
Click on New Job
Give a job name
choose one of
Build a free-style software project (more control over execution process)
Build a maven2 project (nice for pure maven 2 based jobs)
Build multi-configuration project
same as free-style project but a matrix of slaves, JDKs and others is excecuted.
Monitor an external job (not tried yet)
Copy existing job (if you want to start from an existing job)
configure the job
see hudson help found by clicking "?" for that option, find additional notes here
for project type specific options see links above
common project options
Discard old builds - We suggest to keep last 10 builds but feel free to change it to meet your need.
java15_default - default jdk 1.5.0 for the slave you are executing on. Normally SUN but can be Bea, ibm or HP.
java16_default - same as above but version 1.6.0
- openjdk-local - this is the OpenJDK installed locally on every slave that supports that (RHEL5 and Fedora currently)
for more specific needs, please choose another one from the list but consider slaves you are running on
Tie your builds to a particular machine
Always tie your project to a particular label or as an exception to a machine!
We have various predefined labels that you should consider using as names are pretty much self-explanatory
if no label seems to match your needs, please contact QA team
special labels are linux-slim, unix-slim and unix-micro
normally you would use unix-micro at all
linux-slim you use when your project doesn't need dedicated network resources like port numbers, IPs, etc. generally when you don't fork servers like JBoss AS but not limited to it
unix-slim is same as linux-slim but you don't care if it is linux or some other UNIX machine
Source Code Management
It's pretty obvious. Keep in mind you cannot have cvs and svn sources at the same time.
Here you define when does your run
Poll SCM is what you normally want, "5 19 " would mean you want your source tree to be checked for modifications every day at 5 minutes past 7pm.
Another option is to build periodically
you can as well set a job name so this job will execute once the specified job has finished execution
Abort the build if it's stuck
please always set this value
set the number of minutes to around one third more than what it takes for the job to complete normally
Run Xvnc during build
select this option if you require X environment for your tests
Kill stale processes when build is done
Please always select this option if you are not tied to -slim slave. In the future we hope to have it by default where needed
Build (see project type specific pages above)
Archive the artifacts
here you define patterns for archiving artifacts generate by the build
please consider setting "Discard all but the last successful artifact to save disk space" in advanced section if you don't really need all artifacts in history.
Build other projects
Here you set jobs to build after this one finishes. Its the oposit of the "Build after other projects are built" and changes the selected jobs' configuration automatically.
Other important notes
Once you have configured, you can force a build right away or wait for triggers to kick in.
For any help, look at HudsonTroubleshooting, then please send a mail to email@example.com.
Stale Processes - Please take extra care to not leave stale processes after build. From my experience the issue "can't delete file /<some path>/.nfs<something>" appears when there are stale processes having these temporary files opened. Be especially careful when using -slim (dedicated to execute fast more simple builds) slaves because our kill plug-in can't work there.
Environment for jobs that you can use
for installed software on every slave, please look at AddingSlaveToMasterInHudson -> "requirements for" section.
java, ant, maven, svn 1.4.x, cvs, vncserver in path
2 test IPs
Environment variables pointing to important locations
MYTESTIP_1 and MYTESTIP_2 storing the test IPs you can use to bind to
MCAST_ADDR storing an IPv4 multicast group address
HUDSON_CONFIG_DIR - directory where hudson configuration resides (subversion repo managed); all job configuration is good to be kept there
HUDSON_STATIC_ENV - directory to store files that don't change with every build (for example if you manage a kind of library repository or something)
COMMON_TOOLS - where platform independent tools are located (rarely used by users)
NATIVE_TOOLS - where platform dependent tools are located (rarely used by users)
SOURCE_REPO - where some tools' sources and binaries are available (to save long network downloads)
SEP and PSEP - separator ("/" or "\") and path separator (":" or ";") (rarely used)
MAVEN_OPTS and ANT_OPTS - should define sane java options for most use cases
You can use these variables putting in configuration for your jobs like $. Ask in jboss-qa-internal for more about the feature.
For other convenience configuration see project types' pages above.