From 7a684aa7be9f0ea73d9573dba9cbe5b87cd03b93 Mon Sep 17 00:00:00 2001 From: Eason WaveKat Date: Sun, 26 Jul 2026 12:58:37 +1200 Subject: [PATCH] ci: install release-plz from prebuilt binary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-plz/action installs release-plz with `cargo-binstall --strategies=crate-meta-data,compile`. On the self-hosted wavekat-ci runner, binstall's fetchers exceed their resolution deadline before finding the prebuilt release asset, so `compile` wins and the job builds release-plz from source — 8m34s of a 12m32s job, on every push to main including no-op runs. Same action on ubuntu-latest resolves the prebuilt in 2.2s; the difference is egress speed from the self-hosted runner, where the same tarballs take ~25x longer to fetch. Install via taiki-e/install-action instead, which downloads the prebuilt binary directly, and invoke release-plz with the same arguments the action's composite steps use. cargo-semver-checks stays pinned at 0.48 to match what the action was installing. `fallback: none` matters: without it a version missing from install-action's manifest silently falls back to cargo-binstall and restores the source build with nothing in the log to explain it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01VbUTWyPHJSyuKYJaz5KgFt --- .github/workflows/release-plz.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml index de40f4b..384001e 100644 --- a/.github/workflows/release-plz.yml +++ b/.github/workflows/release-plz.yml @@ -17,9 +17,27 @@ jobs: fetch-depth: 0 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - - uses: release-plz/action@v0.5 + + # Not release-plz/action: it installs release-plz via cargo-binstall, whose + # fetchers exceed their resolution deadline on this runner's slow egress and + # silently fall back to `cargo install` from source (~8.5 min every run). + # install-action downloads the prebuilt binary instead (~10s). `fallback: none` + # keeps a version missing from install-action's manifest a hard failure rather + # than a silent return to the source build. + - uses: taiki-e/install-action@v2 with: - command: release + tool: release-plz@0.3.160,cargo-semver-checks@0.48 + fallback: none + + - name: Configure git user + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + - name: Run release-plz + run: | + release_output=$(release-plz release --git-token "$GITHUB_TOKEN" -o json) + echo "release_output: $release_output" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}