Implementation:Ray project Ray Buildkite Aarch64 Pipeline
| Knowledge Sources | |
|---|---|
| Domains | CI, Build, Docker, ARM64 |
| Last Updated | 2026-02-13 16:00 GMT |
Overview
This file defines the Buildkite "aarch64 tests" pipeline group that builds and tests Ray on Linux ARM64 architecture, including wheel builds, Docker images, and wheel validation tests.
Description
The .buildkite/linux_aarch64.rayci.yml pipeline mirrors much of the x86_64 build pipeline but targets the ARM64 (aarch64) architecture. It uses builder-arm64 instance types to build forge, manylinux, Java, core, wheel, and Docker images for aarch64, then runs core and serve wheel tests on ARM64 instances. The pipeline is gated by a manual block step on premerge and microcheck pipelines to avoid unnecessary resource usage. A sort_key: "~aarch64" places it late in the pipeline ordering. The pipeline builds Docker images for CPU and CUDA variants across Python 3.10-3.14 (wheels) and 3.10-3.13 (Docker images), with CUDA versions ranging from 11.7.1 to 12.9.1.
Usage
Developers modify this file when adding new Python or CUDA version support for ARM64, updating ARM64-specific build configurations, changing the aarch64 test suite, or adjusting the dependency chain for ARM64 Docker image builds. It is important for ensuring Ray works on AWS Graviton and similar ARM-based cloud infrastructure.
Code Reference
Source Location
- Repository: Ray
- File:
.buildkite/linux_aarch64.rayci.yml - Lines: 1-452
Signature
group: aarch64 tests
sort_key: "~aarch64"
steps:
# block on premerge and microcheck
- block: "Run Linux aarch64 tests"
if: build.env("BUILDKITE_PIPELINE_ID") == "0189942e-..."
- name: forge-aarch64
wanda: ci/docker/forge.aarch64.wanda.yaml
instance_type: builder-arm64
- name: manylinux-aarch64
wanda: ci/docker/manylinux.wanda.yaml
env_file: rayci.env
env:
HOSTTYPE: "aarch64"
instance_type: builder-arm64
- name: ray-core-build-aarch64
label: "wanda: core binary parts py{{matrix}} (aarch64)"
wanda: ci/docker/ray-core.wanda.yaml
env_file: rayci.env
matrix: ["3.10", "3.11", "3.12", "3.13", "3.14"]
Import
Configuration file, referenced by the Buildkite CI pipeline system. Loaded as part of the RayCI pipeline group mechanism. Unlike other pipeline groups, this one has no top-level depends_on and is self-contained with its own forge and manylinux builds.
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
rayci.env |
env file | yes | Environment configuration file for Wanda builds |
forge-aarch64 |
dependency | yes | ARM64 forge build environment (self-produced) |
manylinux-aarch64 |
dependency | conditional | Required for wheel upload and test steps |
oss-ci-base_build-aarch64 |
dependency | conditional | ARM64 base CI build image for wheel tests |
Outputs
| Name | Type | Description |
|---|---|---|
forge-aarch64 |
Docker image | ARM64 forge build environment |
manylinux-aarch64 |
Docker image | ARM64 manylinux build environment |
| Python wheels (aarch64) | artifact | Ray wheels for Python 3.10-3.14 on aarch64 |
| C++ wheel (aarch64) | artifact | Ray C++ wheel on aarch64 |
ray Docker images (aarch64) |
Docker image | Ray runtime images for CPU and CUDA on aarch64 |
ray-extra Docker images (aarch64) |
Docker image | Extended Ray images on aarch64 |
| Core wheel test results | CI artifacts | Results from core and serve wheel tests on ARM64 |
Usage Examples
The pipeline builds and publishes ARM64 artifacts:
# ARM64 wheel build step
- name: ray-wheel-build-aarch64
label: "wanda: wheel py{{matrix}} (aarch64)"
wanda: ci/docker/ray-wheel.wanda.yaml
matrix: ["3.10", "3.11", "3.12", "3.13", "3.14"]
env:
ARCH_SUFFIX: "-aarch64"
HOSTTYPE: "aarch64"
tags: [release_wheels, linux_wheels]
instance_type: builder-arm64
depends_on:
- ray-core-build-aarch64
- ray-java-build-aarch64
- ray-dashboard-build-aarch64
# ARM64 wheel test on ARM64 instances
- label: ":ray: core: wheel-aarch64 tests"
tags: linux_wheels
instance_type: medium-arm64
commands:
- bazel run //ci/ray_ci:test_in_docker -- //python/ray/tests/... core
--build-type wheel-aarch64
--only-tags post_wheel_build
--python-version 3.10
job_env: forge-aarch64
# ARM64 image publishing (uses x86_64 instance for crane tool)
- label: ":crane: publish: ray py{{matrix}} (aarch64)"
instance_type: small # x86_64 since crane is x86_64 only
commands:
- bazel run //ci/ray_ci/automation:push_ray_image --
--architecture aarch64