This page provides instructions on how to configure CVS to send message events that trigger the execution of Bamboo plans.
You only need to configure CVS to send these message events if The repository triggers the build when changes are committed trigger has been configured for one or more of your Bamboo plans.
Configuring CVS to trigger a build
This section explains how to configure CVS to trigger a build when the repository is changed. This involves installing two scrips:
- A pre-commit trigger keeps track of the last directory to be processed, so we know when the commit has completed.
- A post-commit trigger that waits until it has processed the last directory of the commit before instructing the Bamboo server to execute the relevant plan(s).
On this page:
The following commands and script files assume that your CVS server runs on a UNIX- or Linux-based operating system. If your CVS server runs on any other operating system, then you will need to modify the script files and if necessary, the commands below to suit that operating system.
Step 1. Checking out the CVSROOT
First check out your repository's CVSROOT directory into a temporary directory:
cvs -d cvsroot-to-your-repository checkout CVSROOT
where:
cvsroot-to-your-repository
is the root directory pathname of the CVS repository.
Using
-d cvsroot-to-your-repository
overrides the any$CVSROOT
environment variable setting.
The following files should be checked out:
U CVSROOT/checkoutlist U CVSROOT/commitinfo U CVSROOT/config U CVSROOT/cvswrappers U CVSROOT/editinfo U CVSROOT/loginfo U CVSROOT/modules U CVSROOT/notify U CVSROOT/rcsinfo U CVSROOT/taginfo U CVSROOT/verifymsg
Step 2. Install the pre-commit trigger
Add a line like the following example's to the CVSROOT/commitinfo
pre-commit trigger file. The CVSROOT/commitinfo
file contains the list of programs to run whenever a file is about to be committed to the repository.
^Moo /path-to-your-bamboo-installation/scripts/cvs-triggers/preCommit.sh %r/%p
where:
^Moo
is the regular expression used to identify the name of the module (calledMoo
) being updated./path-to-your-bamboo-installation/scripts/cvs-triggers/preCommit.sh
is the Bamboo shell script used to detect the last file of the check in.
If your Bamboo installation and CVS server are on different machines, refer to the note below.
Step 3. Install the post-commit trigger
Add a line like the following example's to the CVSROOT/loginfo
post-commit trigger file. The CVSROOT/loginfo
file contains the list of programs to run whenever a file has been successfully committed into the repository.
^Moo /path-to-your-bamboo-installation/scripts/cvs-triggers/postCommitBuildTrigger.sh %r/%p http://bamboo-base-url MOO-KEY
where:
^Moo
is the regular expression used to identify the name of the module (calledMoo
) being updated./path-to-your-bamboo-installation/scripts/cvs-triggers/postCommitBuildTrigger.sh
is the Bamboo shell script to trigger the build.
If your Bamboo installation and CVS server are on different machines, refer to the note below.
- %r/%p
is how CVS tells the
postCommitBuildTrigger.sh
script which directory it is committing. - http://bamboo-base-url
is the URL of the Bamboo server.
MOO-KEY
the key of the Bamboo plan to be executed.
Step 4. Save the changes back to CVS
Commit the changes you made to the CVSROOT/commitinfo
and CVSROOT/loginfo
files in step 2 and 3, respectively, back to the repository.
cvs -d cvsroot-to-your-repository commit
where:
cvsroot-to-your-repository
is the root directory pathname of the CVS repository.
Using
-d cvsroot-to-your-repository
overrides the any$CVSROOT
environment variable setting.
Step 5. Do a test commit
Conduct a 'test' commit. Bamboo should start building the relevant plan after a few seconds.
The Bamboo log file should contain an entry like this:
[INFO] com.atlassian.bamboo.build.UpdateAndBuild - Bamboo build was triggered by remote http call from 127.0.0.1
- The
postCommitBuildTrigger.sh
is only triggered when the last file of the commit has been committed. - The
preCommit.sh
andpostCommitBuildTrigger.sh
must have sufficient privileges to be executed by the CVS user. - If your Bamboo installation is not running on the same machine as the CVS server, you will also need add the Bamboo
preCommit.sh
andpostCommitBuildTrigger.sh
files to the CVSROOT directory and add the names of these files to the end of thecheckoutlist
file.
Notes
Build Trigger Security — Bamboo will only accept remote build triggers if the triggers originated from the CVS server(s) identified in the CVS root paths of any Bamboo plans. Requests originating from other CVS servers will be rejected by Bamboo.