Gerrit CI Docker Image

This is a Docker image based on the Jenkins Docker image that allows users to build and test the Gerrit CI jobs automatically, based on the configuration at https://gerrit.googlesource.com/gerrit-ci-scripts/

In turn, these CI scripts are based on http://docs.openstack.org/infra/jenkins-job-builder/ -- which builds Jenkins jobs based on YAML configurations.

In this particular image, the YAML configurations are updated and jobs reloaded every 5 minutes via the Jenkins SCM trigger. These jobs are fetched from the gerrit-ci-scripts repository and automatically reloaded.

It is also possible to run the gerrit-ci-scripts-manual job and provide the legacy Change ID number and a particular revision to build: Jenkins will fetch this particular change and load any job configurations changed in this revision. Note that it will not inhibit the main gerrit-ci-scripts trigger from polling.

Notes for users of boot2docker

If you're using boot2docker, the stock drive image and memory will not be enough. I would recommend growing your boot2docker volume to at least 40GB, and perhaps adding an extra 2-4GB swap space at the end of the volume. Additionally, you may wish to increase the amount of memory allocated to your boot2docker VM to at least 3GB (4GB+ preferred). Failing to do this may result in unusual failures of the VM or build errors.

For more information on enlarging the boot2docker volume, please see: https://docs.docker.com/articles/b2d_volume_resize/

Building all the images with one command

make build

Images

Images available are:

  • gerritforge/gerrit-ci-agent: Base Jenkins agent with OS and prerequisites.

  • gerritforge/gerrit-ci-agent-debian: Base Jenkins agent with OS and prerequisites.

  • gerritforge/gerrit-ci-agent-bazel: Bazel build for gerrit 2.14+.

  • gerritforge/gerrit-ci-agent-bazel-sbt: Setups scala for plugins that use scala.

  • gerritforge/gerrit-ci-agent-mvn - Setups maven for plugins that use maven.

Running the container

  • docker run --privileged -it <image_name> bash

If your not familar with docker please follow https://docs.docker.com/get-started/