From 06375ba32845469724fc233971ed826b9bcfc827 Mon Sep 17 00:00:00 2001 From: Conrad Kramer Date: Sun, 7 Jun 2026 10:03:09 -0700 Subject: [PATCH] Skip Namespace remote cache probe on macOS --- Scripts/ci/nscloud-cache.sh | 20 ++++++++++++++++--- ...nfrastructure-and-store-upload-pipeline.md | 4 +++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Scripts/ci/nscloud-cache.sh b/Scripts/ci/nscloud-cache.sh index 03ac347..cee2b25 100755 --- a/Scripts/ci/nscloud-cache.sh +++ b/Scripts/ci/nscloud-cache.sh @@ -52,6 +52,23 @@ configure_bazel_remote_cache() { return 0 fi + local bazelrc_path + bazelrc_path="${NSC_BAZELRC_PATH:-${TMPDIR:-/tmp}/burrow-nsc-cache.bazelrc}" + portable_mkdir -p "$(dirname "$bazelrc_path")" + + if [[ "$(uname -s 2>/dev/null || true)" == "Darwin" ]]; then + append_bazel_storage_cache "$bazelrc_path" + export BURROW_BAZEL_NSCCACHE_ACTIVE=0 + export BURROW_BAZEL_NSCCACHE_BAZELRC="$bazelrc_path" + echo "::warning ::Namespace Bazel remote cache probe skipped on macOS; using local Bazel repository/disk cache." + if [[ -n "${GITHUB_ENV:-}" ]]; then + echo "BURROW_BAZEL_NSCCACHE_ACTIVE=0" >> "$GITHUB_ENV" + echo "BURROW_BAZEL_NSCCACHE_BAZELRC=$bazelrc_path" >> "$GITHUB_ENV" + echo "NSC_BAZELRC_PATH=$bazelrc_path" >> "$GITHUB_ENV" + fi + return 0 + fi + export BURROW_BAZEL_NSCCACHE_ACTIVE=0 if ! command -v nsc >/dev/null 2>&1; then if bash Scripts/ci/ensure-nsc.sh; then @@ -68,9 +85,6 @@ configure_bazel_remote_cache() { fi fi - local bazelrc_path - bazelrc_path="${NSC_BAZELRC_PATH:-${TMPDIR:-/tmp}/burrow-nsc-cache.bazelrc}" - portable_mkdir -p "$(dirname "$bazelrc_path")" local probe_timeout="${BURROW_NSC_CACHE_PROBE_TIMEOUT:-30s}" if optional_timeout "$probe_timeout" nsc auth check-login >/dev/null 2>&1 && optional_timeout "$probe_timeout" nsc cache bazel setup --bazelrc "$bazelrc_path" >/dev/null 2>&1; then diff --git a/evolution/proposals/BEP-0009-release-infrastructure-and-store-upload-pipeline.md b/evolution/proposals/BEP-0009-release-infrastructure-and-store-upload-pipeline.md index 091505b..e34ff27 100644 --- a/evolution/proposals/BEP-0009-release-infrastructure-and-store-upload-pipeline.md +++ b/evolution/proposals/BEP-0009-release-infrastructure-and-store-upload-pipeline.md @@ -52,7 +52,9 @@ The same change also makes the forge itself the release authority: release tags probes must be timeout-bounded so Apple builds can continue without the remote cache. Apple workflows should call the fail-open cache helper directly instead of entering the full Nix development shell just to decide whether a - cache is available. + cache is available. macOS runners should use the local Bazel disk/repository + cache path and skip the `nsc` remote-cache auth probe, which is optional and + can block without GNU timeout support. - Produce unsigned Apple validation artifacts when signing is absent, but require signing for an App Store requested iOS release and for a Sparkle tester release. Uploadable artifacts are produced only after provisioning profiles can be synced from App Store Connect credentials and the relevant Apple certificate is proven to match the selected Google KMS key. - Resolve release credentials through age/agenix before signed Apple lanes run. Forgejo secrets should carry only the runner age identity fallback and the Authentik WIF client secret until OpenBao can mint the runner token directly. App Store Connect keys and signing certificates live as sealed files under `secrets/`. - Persist the forge runner SSH key as `/var/lib/forgejo-runner-agent/age_keystore` and export `BURROW_RUNNER_AGE_IDENTITY_PATH` so jobs can resolve agenix identities without embedding long-lived material in every workflow.