- generating tarballs of the perl dependencies ("vendor bundles")
- uploading the above to an amazon s3 bucket
- generating several related docker images
Adding dependencies to BMO (or bugzilla in general) involves adding them to Makefile.PL. Getting these dependencies deployed to our infrastructure is more complicated.
For each type of bundle we produce, you need to run the docker container mozillabteam/PLATFORM. Currently PLATFORM is centos6 and ubuntu14. From inside the container, run the following:
source /build/env.sh
git clone --depth 1 https://github.com/mozilla-bteam/bmo.git
cd bmo
cp ../cpanfile.snapshot .
$PERL Makefile.PL
make cpanfile GEN_CPANFILE_ARGS="-D bmo"
$PERL $CARTON install
After that, use 'docker cp' to copy build/bmo/cpanfile and /build/bmo/cpanfile.snapshot to bundle/PLATFORM and commit them.
This is the same as adding a dependency, except instead of "$PERL $CARTON install" you run "$PERL $CARTON upgrade".
jobs that build docker containers (bmo-base, bmo-ci, etc)
All the jobs below are used to build collections of the perl dependencies that BMO needs.
This job creates the 'bmo' bundle, which is for use on centos 6 or RHEL 6 machines. This is what production, vagrant, CI, and so on use.
This job creates the 'mozreview' bundle, which is used by the version-control-tools bmoweb container. It is used for mozreview and probably some other systems and is a huge burden that makes me sad.
This job just collects vendor.tar.gzs from other jobs and uploads them to an amazon S3 bucket.
Some bits of configuration used in multiple locations
The following list of steps are used on all jobs that build vendor tarballs.