Buildkite Bazel Pipeline Example
This repository is an example Buildkite pipeline that uses Bazel to build a C++ project.
See the full Getting Started Guide for step-by-step instructions on how to get this running.

How it works
The empty WORKSPACE
file marks the directory as a Bazel workspace, and main/BUILD
defines the build targets.
The pipeline.yml tells Bazel to build the hello-world
target in main/BUILD
:
steps:
- label: ":bazel: Build"
commands:
- bazel build //main:hello-world
The hello-world
target uses the Bazelcc_binary
rule to build a hello-world
executable from the source file hello-world.cc
.
If you want to test the result by running the resulting binary, add the following line to your copy of the Pipeline:
- bazel-bin/main/hello-world
Setup
You’ll need some dependencies installed alongside your Buildkite Agent:
An example Dockerfile for an image with the agent and these dependencies:
FROM buildkite/agent:3
# Install gcc etc
RUN apt-get update && apt-get install -y build-essential
ARG TARGETOS
ARG TARGETARCH
# Install bazelisk
ADD --chmod=0755 https://github.com/bazelbuild/bazelisk/releases/download/v1.26.0/bazelisk-${TARGETOS}-${TARGETARCH} /usr/local/bin/bazel
# or a specific version of Bazel, if you want to lock it down
#ADD --chmod=0755 https://releases.bazel.build/8.2.1/release/bazel-8.2.1-${TARGETOS}-${TARGETARCH} /usr/local/bin/bazel
On macOS, you can use Homebrew to install the Buildkite Agent and Bazelisk:
brew install bazelisk
Homebrew should prompt you to install Xcode Command Line Tools which includes a C++ compiler. If not:
xcode-select --install
License
See LICENSE (MIT)