tree: 1fe40a3f5d4d4545a0ade6403f120bd43d5d5dd7 [path history] [tgz]
  1. docs/
  2. pipelines/
  3. acceptance-test.sh
  4. bazelci.py
  5. create_images.py
  6. create_instance_groups.py
  7. create_worker.py
  8. install-android-sdk.sh
  9. install-azul-zulu.sh
  10. install-bazel.sh
  11. install-buildkite-agent.sh
  12. install-docker.sh
  13. install-nodejs.sh
  14. install-oracle-java.sh
  15. install-python36.sh
  16. README.md
  17. setup-freebsd.sh
  18. setup-ubuntu.sh
  19. setup-windows-manual.ps1
  20. setup-windows.ps1
  21. shell-utils.sh
  22. shutdown.sh
  23. startup-freebsd11.sh
  24. startup-ubuntu.sh
  25. startup-windows.ps1
buildkite/README.md

Bazel Continuous Integration

Bazel uses Buildkite for continuous integration. The buildkite folder contains all the scripts and configuration files necessary to setup Bazel's CI on Buildkite.

Bazel on Buildkite 101

Buildkite currently does not support anonymous viewing of build results (it‘s in the works) and for now requires one to be logged in before being able to trigger builds, view build and test results. We have set up a separate mechanism to view build and test results for pull requests and so as a contributor to Bazel you typically don’t need access to Buildkite. However, if you are a maintainer of a repository under the @bazelbuild organisation or a Bazel team member with sheriff duties you probably do need access, and if so please ping either @buchgr, @philwo or @fweikert and we will get you on Buildkite.

When you first log into Buildkite you are presented with a list of pipelines. A pipeline consists of steps that are executed either in sequence or in parallel and that all need to succeed in order for the pipeline to succeed. The Bazel organisation has dozens of pipelines. Here are a selected few:

pipelines

  • The bazel postsubmit pipeline builds and tests each commit to Bazel's repository on all supported platforms.
  • The bazel presubmit pipeline is triggered on every pull request to Bazel.
  • The rules_go postsubmit pipeline is triggered on every commit to the rules_go repository.
  • The TensorFlow pipeline builds and tests TensorFlow at HEAD every four hours.

failed build step

flaky test

flaky test log

Pull Requests

Bazel accepts contributions via pull requests. Contributions by members of the bazelbuild organisation as well as members of individual repositories (i.e. rule maintainers) are automatically whitelisted and will be build and tested on Buildkite automatically.

An external contribution first needs to be verified by a member before it‘s build and tested on Bazel’s CI. For external contributions you'll see a status as the below:

status verify pull request

A member can approve the pull request by clicking on Details, followed by Verify Pull Request

buildkite verify pull request buildkite pull request verified

Please vet those contributions carefully as they can run arbitrary code on our CI machines.

When you open a new pull request, Buildkite will first try to verify the contribution based on the pull request creator. That is, contributions by users who are part of the bazelbuild organisation are automatically accepted

That is, if the creator of the pull request is a Bazel team member then it will create a new pull request there.

When a new pull request is opened Buildkite will be triggered and first try to verify that the contribution