Skip to content

chore: migrate to Aspect CLI AXL tasks on ephemeral GHA runners - #276

Merged
gregmagolan merged 11 commits into
mainfrom
chore/aspect-cli-axl-ephemeral-migration
May 24, 2026
Merged

chore: migrate to Aspect CLI AXL tasks on ephemeral GHA runners#276
gregmagolan merged 11 commits into
mainfrom
chore/aspect-cli-axl-ephemeral-migration

Conversation

@gregmagolan

@gregmagolan gregmagolan commented May 23, 2026

Copy link
Copy Markdown
Member

Migrate from Aspect Workflows (.aspect/workflows/config.yaml) to the Aspect CLI on ephemeral GitHub Actions runners.

Adds

  • .aspect/version.axl — pins the Aspect CLI to 2026.21.30.
  • .aspect/config.axl — opts in to artifact uploads (testlogs/profile/BEP), sets --config=ci in CI, registers an aspect buildifier task alias.
  • .github/workflows/ci-workflows.yaml — 25 aspect test jobs (Bazel 7/8/9 × root + 8 e2e workspaces) plus a buildifier job.
  • tools/format/BUILD.bazel with format_multirun(name = "buildifier") (starlark-only).
  • Root //:buildifier alias to //tools/format:buildifier.
  • README note linking to the Aspect CLI repo / docs / install.

Removes / renames

  • .aspect/workflows/config.yaml and .aspect/workflows/bazelrc (legacy Aspect Workflows config). The bazelrc settings are hoisted into the root .bazelrc under :ci with --lockfile_mode=off (since the lock is gitignored).
  • .github/workflows/ci.yaml (vanilla-bazel matrix) preserved as ci-vanilla-bazel.yaml.
  • .github/workflows/buildifier.yaml (replaced by the buildifier job in ci-workflows.yaml).

Notes

  • aspect_rules_lint 1.13.0 added as a dev dep (needed for format_multirun). Pinned rules_go 0.60.0 explicitly so Bazel 9 builds don't trip on the legacy CcInfo global symbol that gets pulled through aspect_rules_lint's transitive rules_go 0.42.

Changes are visible to end-users: no

Test plan

  • CI on this PR

@aspect-workflows

aspect-workflows Bot commented May 24, 2026

Copy link
Copy Markdown

✨ Aspect Workflows Tasks

📅 Sun May 24 16:14:25 UTC 2026

✅ 25 successful tasks

  • ✅ buildifier · ⏱ 25.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Format complete (clean)
  • ✅ test (test-e2e-bundle-bazel-7) · ⏱ 30s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-bundle-bazel-8) · ⏱ 38.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-bundle-bazel-9) · ⏱ 39.5s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-custom_version-bazel-7) · ⏱ 21.8s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-custom_version-bazel-8) · ⏱ 31.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-custom_version-bazel-9) · ⏱ 1m 17s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-npm-links-bazel-7) · ⏱ 17.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-npm-links-bazel-8) · ⏱ 28.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-npm-links-bazel-9) · ⏱ 1m 24s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed · 2 cached)
  • ✅ test (test-e2e-smoke-bazel-7) · ⏱ 19.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-smoke-bazel-8) · ⏱ 24.8s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-smoke-bazel-9) · ⏱ 1m 14s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-sourcemaps-bazel-7) · ⏱ 16.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (8/8 passed · 8 cached)
  • ✅ test (test-e2e-sourcemaps-bazel-8) · ⏱ 22.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (8/8 passed · 8 cached)
  • ✅ test (test-e2e-sourcemaps-bazel-9) · ⏱ 43.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (8/8 passed · 8 cached)
  • ✅ test (test-e2e-toolchain_from_source-bazel-7) · ⏱ 49.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-toolchain_from_source-bazel-8) · ⏱ 40.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-toolchain_from_source-bazel-9) · ⏱ 53.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test (test-e2e-tsconfig-bazel-7) · ⏱ 19.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed · 3 cached)
  • ✅ test (test-e2e-tsconfig-bazel-8) · ⏱ 33s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed · 3 cached)
  • ✅ test (test-e2e-tsconfig-bazel-9) · ⏱ 51.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed · 3 cached)
  • ✅ test (test-root-bazel-7) · ⏱ 40s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (26/26 passed · 26 cached)
  • ✅ test (test-root-bazel-8) · ⏱ 25.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (26/26 passed · 26 cached)
  • ✅ test (test-root-bazel-9) · ⏱ 1m 19s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (26/26 passed · 26 cached)

⏱ Last updated Sun May 24 16:16:11 UTC 2026 · 📊 GitHub API quota 6,985/15,000 (47% used, resets in 46m, throttle 42×)
🚀 Powered by Aspect CLI (v2026.21.36)  |  Aspect Build · X · LinkedIn · YouTube

@gregmagolan
gregmagolan force-pushed the chore/aspect-cli-axl-ephemeral-migration branch from 709e4f2 to ee39539 Compare May 24, 2026 06:40
@gregmagolan
gregmagolan force-pushed the chore/aspect-cli-axl-ephemeral-migration branch from ee39539 to 12da33e Compare May 24, 2026 07:01
aspect_rules_lint transitively selects rules_go 0.42.0, which references
the legacy global `CcInfo` symbol that Bazel 9 removed ("The CcInfo
symbol has been removed, add the following ... load(\"@rules_cc//cc/common:cc_info.bzl\", "CcInfo")").
Add an explicit dev_dependency on rules_go 0.60.0 to override the
transitive selection — 0.60 loads CcInfo from the correct module.
@gregmagolan
gregmagolan force-pushed the chore/aspect-cli-axl-ephemeral-migration branch from c783280 to c84f245 Compare May 24, 2026 08:30
gregmagolan and others added 6 commits May 24, 2026 01:43
Use a GitHub Actions matrix on (workspace, bazel variant) instead of
spelling out one job per combination. Per-workspace exclusions from the
original config.yaml become matrix.exclude entries.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
aspect --task-key only allows [A-Za-z0-9_-], so `.` and `/` from the
workspace path break it. Make workspace a {path, slug} object and use
slug for the task-key (and disk-cache); path still drives
working-directory.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The launcher script's curl call was authenticated, but the aspect
launcher binary itself also hits api.github.com to resolve which
aspect-cli to install — and that call was anonymous, hitting the
60/hr rate limit on shared GHA egress IPs. Setting GITHUB_TOKEN at
the workflow level makes it available to every command, including
the aspect launcher.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
GITHUB_TOKEN is set at workflow-level env, so the per-line prefix on
the curl install commands is redundant. Also drops the explanatory
comment above GITHUB_TOKEN in env — the variable name is self-evident.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pinned launcher resolves the aspect-cli version from .aspect/version.axl
(now walks up the directory tree from sub-workspaces) instead of hitting
api.github.com. Drop the GITHUB_TOKEN env so CI fails loudly if a future
regression reintroduces the API call.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@gregmagolan
gregmagolan merged commit fe93330 into main May 24, 2026
62 checks passed
@gregmagolan
gregmagolan deleted the chore/aspect-cli-axl-ephemeral-migration branch May 24, 2026 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant