8facd237d5
- Replaced the napi-cli/cargo-zigbuild/cargo-xwin/sccache build path with Bazel: rules_rust + crate_universe over Cargo.lock, hermetic zig cc toolchains (linux-gnu pinned to glibc 2.17, linux-musl), host Xcode for darwin, and a repo-local hermetic clang-cl + llvm-ml + xwin toolchain for windows-msvc (bazel/toolchains/msvc). - All eight shipped addons build as //:natives-<target> via the release transition in bazel/defs.bzl (opt, thin LTO, cgu=16, stripped, canonical .node naming); scripts/bazel-natives.ts is the single driver for local dev and CI. - Rust validation moved to bazel test + clippy aspects (strict workspace policy for opted-in crates, default lints elsewhere, mirroring cargo semantics) and the rustfmt aspect; cargo stays as the dev-iteration surface, with brush-core/brush-builtins promoted to workspace members and excluded from cargo dev tasks to keep their historical scope. - CI caches through an in-cluster bazel-remote action cache (TLS + basic auth, cluster-internal only); GitHub-hosted runners never touch the infrastructure and use an actions/cache-backed disk cache instead. - Deleted the hand-rolled caching machinery: ci-target-cache, ci-native-artifact-cache, ci-build-native, native-source-hash, find-native-artifacts, restore-linux-native, native-prewarm workflow, ensure-* toolchain actions, and all sccache/Swatinem wiring. - Warm native rebuilds drop from ~20 minutes to seconds; a cold client with a warm remote cache rebuilds the linux x64 pair in ~2.5 minutes.
66 lines
2.8 KiB
YAML
66 lines
2.8 KiB
YAML
name: "Compose bazel cache config"
|
|
description: >
|
|
Single source of truth for how a CI job caches bazel work, emitted as a
|
|
bazelrc fragment (rc output) consumers pass via `bazelisk --bazelrc=...`.
|
|
omp-kata pods (detected via BAZEL_REMOTE_USER/BAZEL_REMOTE_PASSWORD from the
|
|
bazel-remote-ci secret) get read-write gRPC access to the in-cluster
|
|
bazel-remote service — an address that only resolves inside the cluster, so
|
|
nothing about the infrastructure leaks from this public repo. GitHub-hosted
|
|
runners never talk to that infrastructure: they use a local bazel disk cache
|
|
persisted with actions/cache, keyed on the crate lockfile and module
|
|
definition.
|
|
|
|
inputs:
|
|
scope:
|
|
description: >
|
|
Disk-cache key discriminator for GitHub-hosted runners; jobs building
|
|
different target sets (linux pair, darwin-all, msvc, validation) use
|
|
separate scopes so they don't evict each other's entries.
|
|
required: true
|
|
|
|
outputs:
|
|
rc:
|
|
description: Path to the generated bazelrc fragment
|
|
value: ${{ steps.compose.outputs.rc }}
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Restore bazel disk cache (GitHub-hosted)
|
|
if: env.BAZEL_REMOTE_USER == ''
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/omp-bazel-disk
|
|
~/.cache/omp-bazel-repo
|
|
key: bazel-disk-${{ inputs.scope }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('Cargo.Bazel.lock', 'MODULE.bazel', 'rust-toolchain.toml') }}
|
|
restore-keys: |
|
|
bazel-disk-${{ inputs.scope }}-${{ runner.os }}-${{ runner.arch }}-
|
|
|
|
- name: Compose cache config
|
|
id: compose
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
rc="$RUNNER_TEMP/bazel-cache.rc"
|
|
if [ -n "${BAZEL_REMOTE_USER:-}" ]; then
|
|
auth="$(printf %s "${BAZEL_REMOTE_USER}:${BAZEL_REMOTE_PASSWORD}" | base64 | tr -d '\n')"
|
|
{
|
|
echo "common --config=ci"
|
|
echo "common --config=cache-rw"
|
|
echo "common --remote_cache=grpcs://bazel-remote.bazel-cache.svc.cluster.local:9092"
|
|
echo "common --tls_certificate=infra/bazel-remote/ca.crt"
|
|
echo "common --remote_header='authorization=Basic ${auth}'"
|
|
# PVC-backed shared repository cache (pods are ephemeral; without
|
|
# it every job re-downloads toolchains + crate archives).
|
|
echo "common --repository_cache=$HOME/.cache/omp-bazel-repo"
|
|
} > "$rc"
|
|
else
|
|
{
|
|
echo "common --config=ci"
|
|
echo "common --disk_cache=$HOME/.cache/omp-bazel-disk"
|
|
echo "common --repository_cache=$HOME/.cache/omp-bazel-repo"
|
|
} > "$rc"
|
|
fi
|
|
echo "rc=$rc" >> "$GITHUB_OUTPUT"
|