Skip to content

chore(ci): migrate off BuildJet runners before shutdown#6416

Open
madvart wants to merge 1 commit intomainfrom
worktree-remove-buildjet
Open

chore(ci): migrate off BuildJet runners before shutdown#6416
madvart wants to merge 1 commit intomainfrom
worktree-remove-buildjet

Conversation

@madvart
Copy link
Contributor

@madvart madvart commented Mar 17, 2026

Summary

  • Migrates all CI workflows off BuildJet runners before the March 31st, 2026 shutdown
  • Replaces buildjet-8vcpu-ubuntu-2204 and buildjet-16vcpu-ubuntu-2204 with ubuntu-latest
  • Switches cache-provider: buildjet to cache-provider: github for Rust cache

Note on runner sizing

This PR downgrades from BuildJet's higher-CPU runners (8 and 16 vCPUs) to GitHub-hosted ubuntu-latest (2 vCPUs). This will likely increase build times for CPU-bound Rust compilation steps (benchmark-codspeed and wheel builds). We're intentionally starting with the default runners to see how CI performs before upgrading to larger GitHub-hosted runners (e.g. ubuntu-latest-8-cores, ubuntu-latest-16-cores), which are a paid feature.

Test plan

  • Verify benchmark-codspeed job runs successfully on ubuntu-latest
  • Verify build-wheel job runs successfully for Ubuntu builds
  • Verify Rust cache works with GitHub provider
  • Monitor build times and upgrade to larger runners if needed

🤖 Generated with Claude Code

BuildJet for GitHub Actions shuts down on March 31st, 2026. Migrate
all workflow references to GitHub-hosted runners.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@madvart madvart requested a review from a team as a code owner March 17, 2026 18:18
@github-actions github-actions bot added the chore label Mar 17, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 17, 2026

Greptile Summary

This PR migrates all CI workflows off BuildJet runners ahead of the March 31st, 2026 shutdown, replacing buildjet-8vcpu-ubuntu-2204 and buildjet-16vcpu-ubuntu-2204 with ubuntu-latest, and switching the Rust cache provider from buildjet to github.

  • build-wheel.yml: Ubuntu wheel builds now run on ubuntu-latest (2 vCPUs) instead of buildjet-16vcpu-ubuntu-2204 (16 vCPUs). The manylinux Docker build is functionally unaffected, but release-lto Rust compilations will be significantly slower.
  • pr-test-suite.yml: The benchmark-codspeed job moves from buildjet-8vcpu-ubuntu-2204 (8 vCPUs) to ubuntu-latest (2 vCPUs). With a timeout-minutes: 45 cap and a full maturin develop Rust build step included, there is a risk the job times out on cold cache runs.
  • pr-test-suite.yml: Rust cache provider changed from buildjet to github — the first run after this change will be a cache miss and require a full rebuild, which is expected.
  • No remaining buildjet references were found in the .github/ directory after these changes — the migration is complete.

Confidence Score: 4/5

  • Safe to merge as a necessary migration; minor risk of increased build times and a potential benchmark timeout on cold-cache runs.
  • The changes are straightforward and correct — all BuildJet references are removed and replaced with valid GitHub-hosted runner labels. The main concerns are operational (slower builds, possible timeout on the benchmark job) rather than correctness issues. The migration is required before the March 31st shutdown, so deferring is not a practical option.
  • .github/workflows/pr-test-suite.yml — the benchmark-codspeed job's 45-minute timeout may be tight on a 2-vCPU runner with a cold Rust cache.

Important Files Changed

Filename Overview
.github/workflows/pr-test-suite.yml Replaces buildjet-8vcpu-ubuntu-2204 with ubuntu-latest for the benchmark-codspeed job and switches Rust cache provider to github. The CPU downgrade (8→2 vCPUs) introduces a timeout risk for the 45-minute budget job, which includes a full Rust compilation step.
.github/workflows/build-wheel.yml Replaces buildjet-16vcpu-ubuntu-2204 with ubuntu-latest for Ubuntu wheel builds. The change is functionally correct (manylinux Docker container still builds properly), but represents a significant CPU reduction (16→2 vCPUs) that will likely increase build durations considerably.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[PR / Push trigger] --> B{Job}

    B --> C[build-wheel]
    B --> D[benchmark-codspeed]

    C --> C1["Before: buildjet-16vcpu-ubuntu-2204\n(16 vCPUs)"]
    C --> C2["After: ubuntu-latest\n(2 vCPUs)"]
    C2 --> C3[manylinux Docker build\nrelease-lto Rust compile]

    D --> D1["Before: buildjet-8vcpu-ubuntu-2204\n(8 vCPUs)\ncache-provider: buildjet"]
    D --> D2["After: ubuntu-latest\n(2 vCPUs)\ncache-provider: github"]
    D2 --> D3[Swatinem/rust-cache\ngithub provider]
    D3 --> D4[maturin develop\ndev-bench profile]
    D4 --> D5[CodSpeedHQ/action\nmode: simulation]
    D5 --> D6{timeout-minutes: 45}
    D6 -->|within budget| D7[✅ Pass]
    D6 -->|exceeds budget on cold cache| D8[❌ Timeout risk]
Loading

Last reviewed commit: 6f4044c

Comment on lines +1222 to 1223
runs-on: ubuntu-latest
timeout-minutes: 45
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Potential timeout risk due to CPU downgrade

The benchmark-codspeed job is moving from buildjet-8vcpu-ubuntu-2204 (8 vCPUs) to ubuntu-latest (2 vCPUs) — a 4× reduction in compute. This job has a timeout-minutes: 45 and includes a full maturin develop --uv --profile dev-bench Rust compilation step. On GitHub-hosted runners with only 2 vCPUs, the Rust build alone could potentially consume a large portion of that budget, risking timeout failures.

Consider either:

  • Increasing the timeout to give more headroom on the slower runner, or
  • Pinning to ubuntu-latest with a larger runner label (e.g. ubuntu-latest-4-cores) if available, or
  • Accepting this risk if the build step is typically fast after the cache is warm.

jobs:
build:
runs-on: ${{ inputs.os == 'ubuntu' && 'buildjet-16vcpu-ubuntu-2204' || format('{0}-latest', inputs.os) }}
runs-on: ${{ inputs.os == 'ubuntu' && 'ubuntu-latest' || format('{0}-latest', inputs.os) }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Significant CPU reduction may slow wheel builds

buildjet-16vcpu-ubuntu-2204 provided 16 vCPUs; ubuntu-latest (GitHub-hosted) provides only 2 vCPUs — an 8× reduction. Since the Linux wheel build runs a full --profile release-lto Rust compilation (which is extremely CPU-bound) inside a manylinux Docker container, build times could increase substantially. This may notably lengthen release pipelines or nightly builds.

If build duration becomes a concern, consider using a runs-on matrix that targets larger GitHub-hosted runners (e.g. ubuntu-latest-16-cores) for the ubuntu case, or self-hosted runners with more CPUs.

@samster25
Copy link
Member

@colin-ho I remember you mentioned another company that did Github Runners as a service. Could you remind me who that way?

@colin-ho
Copy link
Collaborator

@colin-ho I remember you mentioned another company that did Github Runners as a service. Could you remind me who that way?

https://www.blacksmith.sh/

@codecov
Copy link

codecov bot commented Mar 17, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.74%. Comparing base (6bec12d) to head (6f4044c).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #6416      +/-   ##
==========================================
- Coverage   74.78%   74.74%   -0.04%     
==========================================
  Files        1020     1020              
  Lines      136319   136314       -5     
==========================================
- Hits       101949   101891      -58     
- Misses      34370    34423      +53     

see 12 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants