Three categories of jobs run on https://ci.bazel.io:
Several jobs control the bootstrap and maintenance of Bazel, they are mostly under the maintenance
and bazel
folders:
benchmark
: benchmarks Bazel performance
This job runs continuously and publishes results at https://perf.bazel.build
maintenance/install-bazel
: installs Bazel release on all workers
maintenance/gerrit-verifier
: detects pending reviews on Gerrit that need validation.
A review needs validation if somebody marks it as Presubmit-Ready
.
bazel/nightly
: handles the Global tests
This job runs every night.
bazel/release
: copy of bazel/nightly
that runs for the release
This job also handles publishing the release artifacts.
bazel/presubmit
: copy of bazel/nightly
that is triggered when someone sets Presubmit-Ready+2
on Gerrit
These jobs simply run Bazel on a GitHub repository.
The job templates and definitions are under //jenkins
.
Particularly interesting is //jenkins/jobs/jobs.bzl
: it contains the logic that computes which jobs to run on the prod CI and on the staging CI.
On the staging CI we run fewer jobs than on the prod one, to make full builds faster.
These jobs are copies of the jobs for the corresponding <project>
. These jobs all use the latest Bazel release:
PR/<project>
: validates a GitHub pull request on <project>
CR/<project>
: validates a Gerrit review request on <project>
Global/<project>
: runs a global presubmit test for changes on <project>