ManagingCF

Prerequisite for using the compile farm

The compile farm builds three targets which it expects to be valid in the Makefile which needs to be found in the main directory of your project:

Building the grf (or binary): make --> build grf file
Packaging the grf (or binary): make bundle_zip --> create tar file with grf and documentation and pack it for distribution
Packaging a source bundle: make bundle_src --> create tar file with sources

All files which match

*.zip *.gz *.nml *.nfo *.md5 *.txt lang docs/*.txt docs *.ob?
will be copied to the DevZone's bundle server.

Setting up the compile farm for your repository

Note: currently this needs some manual setup. Contact Spike or planetmaker to enable building of your project by the DevZone. What needs doing there is:
  • Jenkins -> create new element:
    • choose the element name identical to the project identifier / name as used in Redmine
    • use 'copy from' and choose to copy from the 'template' project
  • Adjust the new project:
    • adjust 'redmine project name' to the name / ID as used in redmine
    • adjust the project description
    • uncheck the box 'Disable Build'
    • fill in the repository connection
    • accept and save the changes
  • Run a test build

Once setup, the compile farm mostly should work automatically. As project manager you may opt to have it build releases and / or nightlies automatically. In order to do so, you have to commit some CF settings to your repo:

Configure when builds are executed

The builds can be switched on by the presence of the files which follow the pattern
.devzone/build/BUILD_TYPE/enable

.devzone/build/releases/enable         // presence of this file enables automatic release builds
.devzone/build/push/enable             // presence of this file enables automatic builds for each commit pushed

BUILD_TYPE 'releases' is built for changeset which is tagged.
BUILD_TYPE 'push' is built for every changeset which is pushed to the DevZone. If several are pushed at once, only those with no descendants are built.

Configure which build process you need

The type of the build process is determined by the content of the file
.devzone/build/type

Available types are:
type requirements build steps executed
bash .devzone/build/BUILD_TYPE/enable ./make.sh
nfo .devzone/build/BUILD_TYPE/enable make; make bundle_zip; make bundle_src
nml .devzone/build/BUILD_TYPE/enable make; make bundle_zip; make bundle_src
nml-sub .devzone/build/BUILD_TYPE/enable make; make bundle_zip; make bundle_src
rpm (& others) requires every file ./.devzone/build/jenkins_build.sh

If this file is not present, the BUILD_TYPE is assumed to be 'nml'. See also the DevZone technical description for a more elaborate but slightly outdated treatize.

Build retention

The DevZone keeps different amounts of builds, depending on the build type:
  • push: 3 builds
  • nightly: 20 builds
  • release (tagged changeset): all builds

Manually triggering the compile farm

The compile farm can also be manually triggered. Go to http://jenkins.openttdcoop.org and browse to your project. Click the right most button in the tabular project overview (which looks somewhat like a clock). You can simply confirm the default settings which are suggested there.

Available compile environment on the build server

The build service by default provides an environment based on debian7 (wheezy).
If you need something special, please contact support staff.

Custom installs:
  • catcodec 1.0.5
  • grfcodec/nforenum default (updated with each push)
  • nml
    • default (updated with each push)
    • nml-0.3 (symlinked to default)
    • nml-0.2
    • nml-eddi (with support for output of actionC)
  • pixa default (updated with each push)

Default packages:

  • cpp 4.7.2
  • dos2unix
  • libboost1.49-all-dev
  • libxml2-utils
  • gimp 2.6
  • graphviz
  • p7zip-full
  • python 2.7.3
    • chameleon
    • chardet
    • imaging
    • markdown
    • numpy
    • pexpect
    • ply
    • scipy
    • setuptools
  • python 3.2
    • chameleon
    • docutils
    • lxml
    • markdown
    • markupsafe
    • pillow
    • ply
    • sphinx
    • roman
  • xcftools 1.0.7