Skip to content

Commit 928fa95

Browse files
committed
ci(release): move release-please off the shared-cache ARC pool (LAB-1040)
release-please inherits contents+PR write and mints a GitHub App installation token, but ran on the self-hosted 'cachekit' pool whose /cache hostPath is shared across all pods and all cachekit-io repos. Job-level permissions: scope tokens, not filesystems — untrusted build-script/proc-macro code in a credential-less job can poison /cache/cargo (config.toml rustc-wrapper, shimmed cargo-<subcommand>) and be executed later by this credentialed job. Move it to ubuntu-latest, matching the other four sibling repos' release-please jobs and this file's own publish job. release-please runs npm/action code only, so it loses nothing without the warm cargo cache. Also correct two comments this move makes stale (gh-CLI rationale, cargo-sbom --force rationale).
1 parent 220823e commit 928fa95

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@ concurrency:
2020
cancel-in-progress: false
2121

2222
jobs:
23+
# GitHub-hosted: this job inherits contents+PR write and mints an App
24+
# installation token. The self-hosted `cachekit` pool shares a writable
25+
# hostPath build cache (/cache) across all pods and every cachekit-io repo,
26+
# and job-level `permissions:` does not isolate that filesystem — untrusted
27+
# build-script/proc-macro code can poison the cache a later credentialed
28+
# job runs against (LAB-1040). release-please needs no warm cache anyway.
2329
release-please:
24-
runs-on: cachekit
30+
runs-on: ubuntu-latest
2531
outputs:
2632
release_created: ${{ steps.release.outputs.release_created }}
2733
tag_name: ${{ steps.release.outputs.tag_name }}
@@ -41,8 +47,9 @@ jobs:
4147
# release PR here. outputs.pr is set whenever the release PR was created
4248
# OR updated, so this re-runs on every push to main while a release PR is
4349
# open — adding an already-present assignee is a no-op, so that's safe.
44-
# github-script, NOT `gh`: the self-hosted cachekit runner has no gh CLI
45-
# (LAB-899). outputs.pr is passed raw via env and parsed in JS — never
50+
# github-script, NOT `gh`: chosen when this job ran on the self-hosted
51+
# cachekit runner, which has no gh CLI (LAB-899); it works identically on
52+
# a hosted runner. outputs.pr is passed raw via env and parsed in JS — never
4653
# through template-position fromJson, which is evaluated even when if: is
4754
# false and crashes on '' for no-release pushes (LAB-865).
4855
- name: Assign release PR to 27Bslash6
@@ -103,10 +110,9 @@ jobs:
103110
subject-path: target/package/*.crate
104111

105112
- name: Install cargo-sbom
106-
# --force is required: the self-hosted runner's CARGO_HOME (/cache/cargo) is a
107-
# persistent volume, so the binary survives between runs and a plain install
108-
# exits 101 ("binary `cargo-sbom` already exists"). --force reinstalls the
109-
# --locked pinned version idempotently.
113+
# --force kept from when this job ran self-hosted with a persistent
114+
# CARGO_HOME (/cache/cargo), where a plain install exits 101 ("binary
115+
# `cargo-sbom` already exists"). Harmless no-op cost on a hosted runner.
110116
run: cargo install cargo-sbom --locked --force
111117

112118
- name: Generate SBOM

0 commit comments

Comments
 (0)