Passing Hudson Environment Variables as Parameters

November 22nd, 2009 | by Ozgur Cem Sen |

Sick weekend; flu, cold, whatever it may be. Hence, for the lack of anything better to do, I gorged myself back into some build-package-release stuff for the Aliro project. The first biggest piece was integrating Hudson, SVN, Ant. And below is a short note for something that made me chase my tail for a bit.
If you’re putting together a build system, most likely you’ll need to pass some variables/parameters into some other processes. In my case, I needed to pass a few Hudson environment variables as parameters to Ant; Hudson workspace path, build number etc. The following table contains a list of all of these environment variables that can be passed around as parameters from Hudson.

Environment Variable Description
BUILD_NUMBER The current build number, such as “153″
BUILD_ID The current build id, such as “2005-08-22_23-59-59″ (YYYY-MM-DD_hh-mm-ss)
JOB_NAME Name of the project of this build. This is the name you gave your job when you first set it up. It’s the third column of the Hudson Dashboard main page.
BUILD_TAG String of hudson-${JOBNAME}-${BUILD_NUMBER}. Convenient to put into a resource file, a jar file, etc for easier identification.
EXECUTOR_NUMBER The unique number that identifies the current executor (among executors of the same machine) that’s carrying out this build. This is the number you see in the “build executor status”, except that the number starts from 0, not 1.
JAVA_HOME If your job is configured to use a specific JDK, this variable is set to the JAVA_HOME of the specified JDK. When this variable is set, PATH is also updated to have $JAVA_HOME/bin.
WORKSPACE The absolute path of the workspace.
SVN_REVISION For Subversion-based projects, this variable contains the revision number of the module. If you have more than one module specified, this won’t be set.
CVS_BRANCH For CVS-based projects, this variable contains the branch of the module. If CVS is configured to check out the trunk, this environment variable will not be set.
*from http://wiki.hudson-ci.org/display/HUDSON/Building+a+software+project

Now you know the names, all you need to do is build.path=${WORKSPACE} in the Ant properties box in the Hudson project configuration. Of course, you can access that parameter as ${build.path} in the Ant build xml or properties files.

Hudson kicks off the Ant, the command line looks like:

1
ant -file build.xml -Dbuild.id=${BUILD_ID} -Dbuild.workspace=${WORKSPACE} init

Sorry, comments for this entry are closed at this time.