# 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/

