The automated make check for Ceph bot runs on Ceph pull requests. It is still experimental and will not be triggered by all pull requests yet.
It does the following:
- Create a docker container (using ceph-test-helper.sh)
- Checkout the merge of the pull request against the destination branch (tested on master, next, giant, firefly)
- Execute run-make-check.sh
- Add a comment to the pull request with a link to the full output of run-make-check.sh.
A use case for developers is:
- write a patch and send a pull request
- switch to another branch and work on another patch while the bot is running
- if the bot reports failure, switch back to the original branch and repush a fix: the bot will notice the repush and run again
It also helps reviewers who can wait until the bot succeeds before looking at the patch closely.
To debug an error, run-make-check.sh can be executed locally on the branch of the pull request, after merging or rebasing against the destination branch.
It can also be run in a container for CentOS 7 or Ubuntu 14.04. Each container needs about 10GB of disk. They are run using a dedicated Ceph clone to not be disturbed while development continues.
The preparation of the container uses install-deps.sh and takes a long time (from five to thirty minutes or more depending on the bandwidth). It is however done once and reused as long as its depedencies (ceph.spec.in, debian/control, etc.) are not modified. The second step, including make -jX check, takes six minutes on a 64GB RAM, 250GB SSD, 24 core server and fifteen minutes on a 16GB RAM, 250GB spinner, 4 core laptop. The -jX is set to half of the number of processors reported by /proc/cpuinfo (i.e. make -j4 if there are 8 processors and make -j12 if there are 24 processors).
The bot runs in a container so that cleaning up a failed test or aborting if it takes too long (30 minutes) can be done by removing the container (for instance with docker stop ceph-ubuntu-14.04).
The bot is triggered from a Gitlab CI based on a mirror of the git repository. They both need to be polished.