From d0ccd00cc06beb1eb5f6ae2c52862fd513f18ad4 Mon Sep 17 00:00:00 2001 From: Jeremi Joslin Date: Tue, 22 Sep 2026 19:44:38 +0700 Subject: [PATCH] fix(release): isolate native client build caches Signed-off-by: Jeremi Joslin --- .github/workflows/release-candidate.yml | 11 ++++-- .../test_release_workflow_structure.py | 34 +++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index 2a7b1dfba..fe304c64f 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -713,13 +713,16 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - target - key: registry-stack-release-clients-go-1.24.4-zig-0.12.1-glibc-2.17-${{ matrix.asset }}-${{ hashFiles('rust-toolchain.toml', 'Cargo.lock', 'release/requirements/maturin-1.9.6.txt', 'release/scripts/zig-glibc-compiler', 'release/scripts/build-linux-python-client', 'release/scripts/build-linux-node-client', 'release/scripts/assemble-registry-client-wheel.py', 'release/scripts/sync-registry-client-node.py', 'crates/registry-discovery-client-node/package-lock.json', 'crates/registry-evidence-client-node/package-lock.json', 'crates/registry-relay-client-node/package-lock.json', 'crates/registry-breg-client-node/package-lock.json', 'crates/registry-casework-client-node/package-lock.json', 'crates/registry-stack-client-node/package-lock.json') }} + target/release-client-python + target/release-client-node + key: registry-stack-release-isolated-clients-go-1.24.4-zig-0.12.1-glibc-2.17-${{ matrix.asset }}-${{ hashFiles('.github/workflows/release-candidate.yml', 'rust-toolchain.toml', 'Cargo.lock', 'release/requirements/maturin-1.9.6.txt', 'release/scripts/zig-glibc-compiler', 'release/scripts/build-linux-python-client', 'release/scripts/build-linux-node-client', 'release/scripts/assemble-registry-client-wheel.py', 'release/scripts/sync-registry-client-node.py', 'crates/registry-discovery-client-node/package-lock.json', 'crates/registry-evidence-client-node/package-lock.json', 'crates/registry-relay-client-node/package-lock.json', 'crates/registry-breg-client-node/package-lock.json', 'crates/registry-casework-client-node/package-lock.json', 'crates/registry-stack-client-node/package-lock.json') }} restore-keys: | - registry-stack-release-clients-go-1.24.4-zig-0.12.1-glibc-2.17-${{ matrix.asset }}- + registry-stack-release-isolated-clients-go-1.24.4-zig-0.12.1-glibc-2.17-${{ matrix.asset }}- - name: Build Python client wheels shell: bash + env: + CARGO_TARGET_DIR: ${{ github.workspace }}/target/release-client-python run: | set -euo pipefail rustup toolchain install 1.95.0 --profile minimal @@ -873,6 +876,8 @@ jobs: - name: Build Node client packages shell: bash + env: + CARGO_TARGET_DIR: ${{ github.workspace }}/target/release-client-node run: | set -euo pipefail IFS=. read -r client_major client_minor client_patch <<<"${CLIENT_VERSION}" diff --git a/release/scripts/test_release_workflow_structure.py b/release/scripts/test_release_workflow_structure.py index 833965213..620cb76f4 100644 --- a/release/scripts/test_release_workflow_structure.py +++ b/release/scripts/test_release_workflow_structure.py @@ -854,6 +854,18 @@ def test_builds_and_smokes_stable_native_client_packages(self) -> None: ) cache_key = cargo_cache["with"]["key"] restore_key = cargo_cache["with"]["restore-keys"] + self.assertEqual( + cargo_cache["with"]["path"].splitlines(), + [ + "~/.cargo/registry", + "~/.cargo/git", + "target/release-client-python", + "target/release-client-node", + ], + ) + self.assertIn("release-isolated-clients", cache_key) + self.assertIn("release-isolated-clients", restore_key) + self.assertIn(".github/workflows/release-candidate.yml", cache_key) self.assertIn("go-1.24.4", cache_key) self.assertIn("go-1.24.4", restore_key) self.assertIn("zig-0.12.1-glibc-2.17", cache_key) @@ -877,6 +889,28 @@ def test_builds_and_smokes_stable_native_client_packages(self) -> None: self.assertIn("expected_wheels=2", wheel) self.assertIn("--require-hashes --only-binary=:all:", wheel) self.assertIn("release/requirements/maturin-1.9.6.txt", wheel) + python_step = next( + step + for step in clients["steps"] + if step.get("name") == "Build Python client wheels" + ) + node_step = next( + step + for step in clients["steps"] + if step.get("name") == "Build Node client packages" + ) + self.assertEqual( + python_step["env"]["CARGO_TARGET_DIR"], + "${{ github.workspace }}/target/release-client-python", + ) + self.assertEqual( + node_step["env"]["CARGO_TARGET_DIR"], + "${{ github.workspace }}/target/release-client-node", + ) + self.assertNotEqual( + python_step["env"]["CARGO_TARGET_DIR"], + node_step["env"]["CARGO_TARGET_DIR"], + ) node = step_run(document, "clients", "Build Node client packages") self.assertNotIn("--use-napi-cross", node) self.assertIn(