MoDisco/Releng/How it Works
- Everything starts from Hudson (see the nightly Hudson Job configuration ).
- The build is started on a defined schedule (every 6 hours), but can also be started manually.
- Hudson first exports the contents of the MoDisco SVN  to its Workspace (
/opt/users/hudsonbuild/.hudson/jobs/cbi-modisco-nightly/workspace). If the build was started automatically and nothing changed on the SVN since the last build, then the build job stops there.
- The Hudson job is configured to execute a shell script that:
- imports and runs the </code>/opt/public/cbi/build/org.eclipse.dash.common.releng/hudson/run.sh</code> script
- reads the next build number from
/opt/users/hudsonbuild/.hudson/jobs/cbi-modisco-nightly/nextBuildNumber, and decrements it to find the current build number
- looks at the log
/opt/users/hudsonbuild/.hudson/jobs/cbi-modisco-nightly/builds/$buildNumber/logto determine if the build failed or succeeded
- exits with an error code if the build failed
- touches the
/opt/public/modeling/gmt/modisco/modiscoBuildPromoteSignalNfile if the build succeeded
Once the Hudson job is finished, the build results are found in
The following entry was added to a crontab (
*/5 * * * * /opt/public/modeling/gmt/modisco/cronPromote.sh
So that the
cronPromote.sh executes every five minutes on the build server.
This script compares the date of the signal file (modiscoBuildPromoteSignalN) touched by the Hudson script at the end of each build
with the date of a reference file touched at the end of each promote (
It then promotes the result of the build by calling ant on the promote.xml of the Releng project, passing it the promote-N.properties for a nightly build or promote-I.properties for an integration build.
The promote is not done directly from Hudson because it does not have the necessary rights.
cronPromote.sh script logs everything it does to
/opt/public/modeling/gmt/modisco/log-cronPromote, and trims this log file regularly to keep about the last 10 days of log.
Additionally, it removes old nightly and integration builds on the download server, keeping the last 5.