Skip to main content
Your Buildkite pipeline runs on Aspect Workflows CI runners by targeting a runner group with agents: queue:. Your existing bazel steps keep working unchanged: the setup step wires the runner’s remote cache, build event service and NVMe-backed output base into every invocation.
Registering the runners with Buildkite is covered in .

Configure a pipeline

  1. Create a new pipeline for your Workflows build, or choose an existing one and configure it.
    • If you use GitHub, follow these steps to integrate your repository with Buildkite.
  2. Choose a queue for the pipeline upload step:
    • If you have access to Buildkite hosted agents, create an agent queue with a small agent (2 vCPU and 4 GB RAM is enough) to run it.
    • Otherwise, target an Aspect Workflows runner group such as aspect-default.
  3. In the Buildkite interface, access Steps > Convert to YAML Steps and paste the upload step. This one targets a hosted agent queue named bk-small:
This uploads the Buildkite pipeline defined in .buildkite/pipeline.yaml in your repository.
  1. Define your Buildkite pipeline. Point each step’s command at your existing bazel invocation and target your Workflows runner queue.
Each step uses the aspect-build/setup-aspect Buildkite plugin. The setup step covers what it does and the inputs it takes.
.buildkite/pipeline.yaml
See Aspect Bazel Examples for a complete working example of a Buildkite pipeline.

Non-Bazel jobs

Jobs that don’t call Bazel need no setup step. Target the runner group and run your commands:
.buildkite/pipeline.yaml

Aspect CLI tasks (optional)

Swap a bazel command for the matching aspect <task> from the open-source Aspect CLI to add status checks, inline PR comments with one-click suggested fixes, retries on transient Bazel errors and selective delivery. Using the Aspect CLI’s platform integrations requires an ASPECT_API_TOKEN. Store it as a Buildkite secret and name it in the secrets: of each step that calls aspect <task>, so the setup plugin can exchange it for a session before the step runs.
.buildkite/pipeline.yaml
The delivery step runs only on the default branch. --query selects the targets to deliver; without it or positional targets, aspect delivery delivers nothing. You can set the query once in .aspect/config.axl instead (ctx.tasks["delivery"].args.query). See aspect delivery. See Running tasks in CI for the full task reference and examples for all CI providers.