Hudson can be used to perform the typical build server work, such as doing continuous/official/nightly builds, run tests, or perform some repetitive batch tasks. This is called "free-style software project" in Hudson. Setting up the projectGo to Hudson top page, select "New Job", then choose "Build a free-style software project". This job type consists of the following elements:
For more details, click the
Builds for Non-Source Control ProjectsThere is sometimes a need to build a project simply for demonstration purposes or access to a SVN/CVS repository is unavailable. By choosing to configure the project as "None" under "Source Code Management" you will have to:
Hudson Set Environment VariablesWhen a Hudson job executes, it sets some environment variables that you may use in your shell script, batch command, or Ant script1. The following table contains a list of all of these environment variables.
Shell Scripts and Windows Batch CommandsIf you're using a shell script to do your build, you can either put these environment variables directly into your shell scripts, or call them as parameters in your shell script. Below is an example how this can be done: Ant ScriptsIf you're using an Ant script to do your build, you may include environment variables in property settings. Click on the Advanced... button just below where you put the Ant targets you want to build. This will display the Properties box. Below is an example how to use the Properties box to set Ant properties with Hudson Environment variables: As an alternative, you can use the Environmental prefix to pull in all environmental variables as properties right inside your build.xml file. Below is an example how to set the property "label" to include the Project Name and the Build Number: <property environment="env"/> <property name="label" value="${env.JOB_NAME}-${env.BUILD_NUMBER}"/> Configuring automatic buildsBuilds in Hudson can be triggered periodically (on a schedule, specified in configuration), or when source changes in the project have been detected, or they can be automatically triggered by requesting the URL: http://YOURHOST/hudson/job/PROJECTNAME/build This allows you to hook Hudson builds into a variety of the set up. For more information (in particular doing this with security enabled), see Remote access API.
Builds by e-mail (sendmail)If you have the root account of your system and you are using sendmail, I found it the easiest to tweak /etc/aliases and add the following entry: hudson-foo: "|/bin/wget -o /dev/null http://YOURHOST/hudson/job/PROJECTNAME/build" and then run "newaliases" command to let sendmail know of the change. Whenever someone sends an e-mail to "hudson-foo@yoursystem", this will trigger a new build. See this for more details about configuring sendmail. Builds by e-mail (qmail)With qmail, you can write /var/qmail/alias/.qmail-hudson as follows: |/bin/wget -o /dev/null http://YOURHOST/hudson/job/PROJECTNAME/build" Builds by changes in CVSTo perform builds whenever someone makes a change in the repository, either invoke the above program from /CVSROOT/loginfo, or hook up CVS notification e-mails as explained above. Or, you could configure Hudson to poll your source control system periodically and start new builds when the changes have been detected. 1 Note: I believe Maven builds also have access to these variables. Can someone verify this? |

Comments (6)
Feb 11
Anonymous says:
I am using the $ notation in a maven build successfully. mvn Dbuild.id=$ clean ...I am using the $
notation in a maven build successfully.
mvn -Dbuild.id=$
Feb 27
Anonymous says:
You can reference Hudson variables as any other property when building with Mave...You can reference Hudson variables as any other property when building with Maven2.
Hudson version 1.184
Feb 27
Anonymous says:
I am using Hudson 1.44, and I have two versions of JDK installed: 1.4 ...I am using Hudson 1.44, and I have two versions of JDK installed: 1.4 and 1.6. Some projects I need to build in 1.4 and others in 1.6. I created two JDK instances in Hudson in the configuration file (config.xml):
<jdk>
<name>jdk 1.4</name>
<javaHome>C:\j2sdk1.4.2_12</javaHome>
</jdk>
<jdk>
<name>jdk 1.6</name>
<javaHome>C:\jdk1.6.0_04</javaHome>
</jdk>
Inside of my project definition, I select jdk 1.6, and I set the Ant build command in the following way:
-DJAVA_HOME=C:\jdk1.6.0_04 -DPATH=C:\jdk1.6.0_04\bin
Unfortunately, when I build I get the following error:
[javac] C:\hudson\jobs\<project>\workspace\<class>.java:18: cannot access java.lang.Object
[javac] bad class file: C:\jdk1.6.0_04\jre\lib\rt.jar(java/lang/Object.class)
[javac] class file has wrong version 49.0, should be 48.0
[javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
[javac] private String text;
[javac] ^
[javac] 1 error
What am I doing wrong?
Mar 28
Bila Nagirner says:
Hello, Is there a way to customize the BUILDNUMBER value? (ie. padde...Hello,
Is there a way to customize the BUILD_NUMBER value? (ie. padded 0's)
Also, how can I reset this value to 1 after doing a few test builds?
Thanks,
Bila
about 3 hours ago
Mark K says:
I was able to do this by updating the number in nextBuildNumber text file inside...I was able to do this by updating the number in nextBuildNumber text file inside of the jobs directory (and all sub-projects), and then bouncing the hudson server.
Jun 27
Adam says:
Hi, what is the value of BUILDID in case of triggering builds by scheduled...Hi,
what is the value of BUILD_ID in case of triggering builds by scheduled "Poll SCM" . Because it looks like this variable keeps time of starting "scanning" not the time of build (at least value of BUILD_ID is different than the name of folder with particaular build in build history). Could somebody help me?
Thanks,
Adam