Implementation:Ray project Ray Buildkite Build Pipeline
| Knowledge Sources | |
|---|---|
| Domains | CI, Build, Docker, Release |
| Last Updated | 2026-02-13 16:00 GMT |
Overview
This file defines the Buildkite "build" pipeline group that handles wheel uploading, C++ wheel building, release Docker image construction, and artifact publishing for Ray releases on x86_64 architecture.
Description
The .buildkite/build.rayci.yml pipeline orchestrates the full release artifact build process for Ray. It coordinates uploading pre-built Python wheels (for Python 3.10 through 3.14), building C++ core and wheel packages, constructing multiple Docker image variants (CPU, CUDA with various versions, LLM-specific images), and publishing all artifacts to container registries. Each step declares explicit dependencies to ensure correct build ordering, with Wanda-based Docker builds and Bazel-driven automation tooling.
Usage
Developers and release engineers modify this file when adding new Python version support, new CUDA version targets, new Docker image variants (such as the ray-llm images), or when changing the release artifact publishing workflow. It is also modified when updating the build dependency graph or adjusting which steps run on premerge versus postmerge pipelines.
Code Reference
Source Location
- Repository: Ray
- File:
.buildkite/build.rayci.yml - Lines: 1-366
Signature
group: build
steps:
- label: ":arrow_up: upload: wheel py{{matrix}} (x86_64)"
key: linux_wheels_upload
instance_type: small
commands:
- bazel run //ci/ray_ci/automation:extract_wanda_wheels --
--wanda-image-name=ray-wheel-py{{matrix}}
- ./ci/build/copy_build_artifacts.sh wheel
matrix:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
depends_on:
- ray-wheel-build
- forge
tags:
- release_wheels
- linux_wheels
- oss
- skip-on-premerge
Import
Configuration file, referenced by the Buildkite CI pipeline system. Loaded as part of the RayCI pipeline group mechanism and processed by the Buildkite agent during build execution.
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
ray-wheel-build |
dependency | yes | Pre-built Ray wheel images produced by the wheel build pipeline |
forge |
dependency | yes | The forge build environment used for Bazel and tooling |
ray-core-build |
dependency | yes | Core Ray binary components required for C++ wheel |
ray-cpp-core-build |
dependency | yes | C++ core build artifacts for the C++ wheel |
ray-java-build |
dependency | yes | Java build artifacts required for C++ wheel |
ray-dashboard-build |
dependency | yes | Dashboard build artifacts for C++ wheel |
raycpubase / raycudabase |
dependency | yes | Base Docker images for CPU and CUDA variants |
manylinux-x86_64 |
dependency | yes | Manylinux build environment for Java jar builds |
rayci.env |
env file | yes | Environment configuration file for Wanda builds |
Outputs
| Name | Type | Description |
|---|---|---|
| Python wheels | artifact | Ray wheels for Python 3.10-3.14 on x86_64 |
| C++ wheel | artifact | Python-agnostic Ray C++ wheel on x86_64 |
| Java jar | artifact | Ray Java bindings jar file |
ray Docker images |
Docker image | Ray runtime images for CPU and multiple CUDA versions across Python 3.10-3.13 |
ray-extra Docker images |
Docker image | Extended Ray images with additional dependencies |
ray-llm Docker images |
Docker image | Ray LLM-specific images (Python 3.11, CUDA 12.8.1) |
ray-llm-extra Docker images |
Docker image | Extended Ray LLM images with additional dependencies |
| Nightly indexes | artifact | Generated nightly package indexes for Docker images |
Usage Examples
The pipeline is triggered automatically by Buildkite. Key build steps include:
# Wheel upload step (runs on postmerge only due to skip-on-premerge tag)
- label: ":arrow_up: upload: wheel py3.12 (x86_64)"
commands:
- bazel run //ci/ray_ci/automation:extract_wanda_wheels --
--wanda-image-name=ray-wheel-py3.12
- ./ci/build/copy_build_artifacts.sh wheel
# Docker image build via Wanda
- name: ray-image-cuda-build
wanda: ci/docker/ray-image-cuda.wanda.yaml
matrix:
setup:
python: ["3.10", "3.11", "3.12", "3.13"]
cuda: ["11.7.1-cudnn8", "12.8.1-cudnn"]
# Image publishing step
- label: ":crane: publish: ray py3.12 (x86_64)"
commands:
- bazel run //ci/ray_ci/automation:push_ray_image --
--python-version 3.12 --platform cpu --platform cu12.8.1-cudnn
--image-type ray --architecture x86_64