Skip to content

Commit ba9e0c3

Browse files
ci: pin credential-holding third-party actions by sha, and pass the Turbo cache credentials only to merge-queue and main runs (#25559)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} --> _Requested by **Tesla** · [project thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoRyAStcu3CV5kiXeCX564xD)_ CI supply-chain hardening, two commits that can land or be dropped independently: 1. **Pin the credential-holding third-party actions by commit sha** (`96212c2`). 2. **Pass the Turbo remote-cache credentials only to merge-queue and main runs** (`7ea2af7`). ## 1. Third-party actions pinned by sha Each names the commit its floating major resolved to when this was written (read with `git ls-remote` against the upstream repository), with a trailing version comment, the form `release.yml` already uses for `changesets/action`. | workflow | action | was | now | credential in reach | |---|---|---|---|---| | `docker-publish.yml` | `docker/setup-qemu-action` | `@v4` | `99012661954931238ded8c8b007157a8430204e1` # v4.4.0 | `packages: write` job | | `docker-publish.yml` | `docker/setup-buildx-action` | `@v4` | `f87e5991a6d7451dcb8d9637bfbc97413f497069` # v4.4.1 | `packages: write` job | | `docker-publish.yml` | `docker/login-action` | `@v4` | `81c6f93d4bc991e510b342a00b419b3bb4efc5c6` # v4.7.0 | `GITHUB_TOKEN` as registry password | | `docker-publish.yml` | `docker/metadata-action` | `@v6` | `dc802804100637a589fabce1cb79ff13a1411302` # v6.2.0 | `packages: write` job | | `docker-publish.yml` | `docker/build-push-action` | `@v7` | `c3c9e263c25d99ce0380d002d59b67737d91b0dc` # v7.4.0 | pushes with the logged-in registry credential | | `check-links.yml` (2 steps) | `lycheeverse/lychee-action` | `@v2` | `e7477775783ea5526144ba13e8db5eec57747ce8` # v2.9.0 | `token` input defaults to the job token | | `ci.yml` (filter job) | `dorny/paths-filter` | `@v4` | `ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d` # v4.0.3 | `token` input defaults to the job token | Already pinned and untouched: `changesets/action` (`release.yml`), `google/osv-scanner-action` (`validate-deps.yml`). Left on tags: first-party `actions/*` and `github/codeql-action` (GitHub-owned); `pnpm/action-setup` in `showcase-smoke.yml` receives no credential. The readers of the paths-filter ref (`check-ci-filter-parity.mjs`, `dispatch-gates.mjs`) match the action by prefix, so a pinned ref reads the same. ## 2. Turbo remote-cache credentials scoped by event Before: every same-repo `pull_request` run received `TURBO_TOKEN` and `TURBO_REMOTE_CACHE_SIGNATURE_KEY`. The read-only `remote:r` setting is turbo client configuration; the token itself can write and the key can sign, so any code a PR runs during its build could upload a signed artifact that a later queue or main build replays. After, in all twelve carriers (`ci.yml` ×7, `lint.yml` ×5), both secrets are gated on the same condition: ```yaml TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }} TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }} ``` - Credentialed: `merge_group`, and every run on `refs/heads/main` (push, the hourly schedule, `workflow_dispatch` on main). Not credentialed: `pull_request`, and a dispatch on any other branch. `TURBO_CACHE` and `TURBO_TEAM` are unchanged, so the write rule is exactly as before. - **Measured question, PR reads with or without the secrets:** Vercel's remote cache authenticates reads as well as writes, and with `remoteCache.signature: true` turbo needs the key to verify a download, which is the same key that signs. So a PR run cannot read the remote without holding both; the answer is **not at all**. A PR run builds from the restored Actions-cache seed (`local:rw`), which `main` saves. ⚠️ I could not reach `api.vercel.com` from this container (egress refused), so the "reads need the token" half is read from turbo's behaviour as `assert-turbo-remote-cache.mjs` already documents it (any of the three unset turns the remote off), not from a live probe; this PR's own CI run is the first live reading. - Cost, measured on this PR's own runs. With the remote withheld, a PR build reads only the Actions seed `main` saves: - At `7ea2af7` (00:27Z, before PR #25523 landed): Build Core `76 build task(s) -- 0 remote hit(s), 0 local hit(s), 76 miss(es)`, build step 6 m 4 s. A credentialed PR in the same window read 53 remote / 0 local / 23 miss (1 m 40 s), so the seed was contributing nothing to anyone, most likely because the 2.4 GB Test Core seed snowball (#25452) was flushing the 10 GB pool on every merge. - At `945502c` (01:34Z, after PR #25523, the merge of main): Build Core `76 build task(s) -- 0 remote hit(s), 76 local hit(s), 0 miss(es)`, build step 911 ms, entirely from the seed. - So with the pool no longer churned, a PR build no longer needs the remote. What remains is seed lag: tasks whose inputs changed in merges that landed after the newest seed was saved rebuild cold. The `assert-turbo-remote-cache` notice prints the local-hit count on every PR run, so a regression is visible in the log. - `assert-turbo-remote-cache.mjs` gains `isCredentialedRun()` (same condition) and reports a disabled remote on a non-credentialed run as a `notice` ("withheld by design"), not a warning. Writing runs still red when the remote is off. New self-test battery `credentialed run` (5 cases): 37 cases across 7 batteries, exit 0. - Build Core's "Credentials" comment, the authority the other carriers point back to, is rewritten to the new rule. ## Verification Gates derived with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` at `7ea2af7`; results under "Gates" below. ### Gates (local, head `7ea2af7`) - `node scripts/pm/dispatch-gates.mjs --commands` derived **70** families from the diff; **66 exit 0**; **4 NOT MEASURED** (exit 3, prerequisite: they read built `dist/`, and no package source is in this diff): `check:dts-closure`, `check:dual-build-cjs-loads`, `check:lean-entry-closure`, `check:sourcemap-no-sources-content`. CI runs them on a real build. - Reconciled: `dispatch-gates.mjs --ran` reports "70 derived families accounted for — 66 run, 4 NOT-MEASURED", exit 0. - Among the 66 green: `check:ci-filter-parity` (+ self-test), `check:required-contexts`, `check:pm-governed-merges`, `check:select-gate-families`, `check:self-test-wired`, `check:workflow-step-name-quoting`, `check:nul-bytes`, and `assert-turbo-remote-cache.mjs --self-test` (37 cases, 7 batteries). - No changeset: the diff touches `.github/workflows/**` and `scripts/ci/**`, which no package publishes (`skip-changeset`). ## 维护者速读(草稿) - **改了什么**:①CI 里拿得到凭据的第三方 action(docker 发布五个、lychee、paths-filter)改为按提交 sha 钉死;②Turbo 远程缓存的 token 和签名密钥只给合并队列和 main 上的运行,PR 运行不再拿到。 - **为什么改**:浮动标签可以被上游重指,下一次运行就把凭据交给未经审阅的代码;PR 里跑的任何代码(包括新加依赖的安装脚本)此前都握着 main 信任的缓存签名密钥。 - **风险与代价(含回滚)**:PR 构建不再读远程缓存,只读 main 存下的 Actions 缓存种子。实测:#25523 落地前种子被挤掉,PR 的 Build Core 0 命中、6 分 4 秒;#25523 落地后本 PR 的 Build Core 76/76 全部命中种子、构建 0.9 秒。剩余代价是种子之后新合并改动过的包需要冷构建。回滚:单独 revert 第二个提交即可,第一个提交独立成立。 - **席位意见**: - **你要做的**:第②条已于 2026-10-24 裁定采用(收回凭据并依赖 Actions 种子);批准后由席位落地。本 PR 保持 draft。 Session: `https://claude.ai/code/session_01W9H2WdXx3kPkf6moDnRdRE` 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01W9H2WdXx3kPkf6moDnRdRE --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 35d5060 commit ba9e0c3

5 files changed

Lines changed: 79 additions & 41 deletions

File tree

‎.github/workflows/check-links.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ jobs:
144144
# retry below; it does NOT let a failure through, because the retry
145145
# step carries no such escape and its failure fails the job.
146146
continue-on-error: true
147-
uses: lycheeverse/lychee-action@v2
147+
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
148148
with:
149149
lycheeVersion: ${{ env.LYCHEE_VERSION }}
150150
args: ${{ env.LYCHEE_ARGS }}
@@ -163,7 +163,7 @@ jobs:
163163
- name: Check links with lychee (retry)
164164
id: lychee-retry
165165
if: steps.lychee.outcome == 'failure'
166-
uses: lycheeverse/lychee-action@v2
166+
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
167167
with:
168168
lycheeVersion: ${{ env.LYCHEE_VERSION }}
169169
args: ${{ env.LYCHEE_ARGS }}

‎.github/workflows/ci.yml‎

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ jobs:
200200
# of nothing at all. An allow-list makes each new event fail toward
201201
# THE FILTER CONTRACT's half 1 instead: the step is skipped, its outputs
202202
# are the empty string, `|| 'true'` fills them in, and everything runs.
203-
- uses: dorny/paths-filter@v4
203+
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
204204
id: changes
205205
if: github.event_name == 'pull_request' || github.event_name == 'push'
206206
with:
@@ -807,9 +807,9 @@ jobs:
807807
env:
808808
NODE_OPTIONS: --report-on-signal --report-signal=SIGUSR2 --report-directory=${{ runner.temp }}/stall-reports
809809
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
810-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
810+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
811811
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
812-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
812+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
813813
run: |
814814
FILTERS=""
815815
if [ -s "$RUNNER_TEMP/shard-packages.txt" ]; then
@@ -1892,9 +1892,9 @@ jobs:
18921892
- name: Build driver-sql and its dependencies
18931893
env:
18941894
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
1895-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
1895+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
18961896
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
1897-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
1897+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
18981898
run: pnpm exec turbo run build --filter=@objectstack/driver-sql... --concurrency=4
18991899

19001900
# The whole driver-sql suite runs under the skewed process zone — not
@@ -1954,9 +1954,9 @@ jobs:
19541954
- name: Build the non-SQL temporal backends
19551955
env:
19561956
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
1957-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
1957+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
19581958
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
1959-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
1959+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
19601960
run: >-
19611961
pnpm exec turbo run build
19621962
--filter=@objectstack/service-analytics...
@@ -2038,9 +2038,9 @@ jobs:
20382038
- name: Build metadata-protocol and its dependencies
20392039
env:
20402040
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
2041-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
2041+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
20422042
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
2043-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
2043+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
20442044
run: pnpm exec turbo run build --filter=@objectstack/metadata-protocol... --concurrency=4
20452045

20462046
- name: Run the metadata-protocol migration statements against live MySQL and PostgreSQL
@@ -2100,9 +2100,9 @@ jobs:
21002100
- name: Build runtime and its dependencies
21012101
env:
21022102
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
2103-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
2103+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
21042104
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
2105-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
2105+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
21062106
run: pnpm exec turbo run build --filter=@objectstack/runtime... --concurrency=4
21072107

21082108
- name: Run the runtime cascade-delete matrix against live PostgreSQL
@@ -2238,9 +2238,9 @@ jobs:
22382238
env:
22392239
NODE_OPTIONS: --report-on-signal --report-signal=SIGUSR2 --report-directory=${{ runner.temp }}/stall-reports
22402240
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
2241-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
2241+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
22422242
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
2243-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
2243+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
22442244
run: |
22452245
mkdir -p "$RUNNER_TEMP/stall-reports"
22462246
node scripts/run-with-stall-guard.mjs --log "$RUNNER_TEMP/dogfood-build.log" --stall-minutes 10 \
@@ -2668,12 +2668,21 @@ jobs:
26682668
# `merge_group` and on `push` / `workflow_dispatch` against main; every
26692669
# other event, `pull_request` and `schedule` included, only reads,
26702670
# because read-only is the default branch of the expression. This is
2671-
# turbo configuration, not a property of the credential: a same-repo PR
2672-
# receives the secrets and runs its own copy of this file; fork PRs
2673-
# receive none. ⚠️ Never let it evaluate to '': turbo then disables the
2674-
# LOCAL cache too (`no caches are enabled`) and re-executes everything.
2675-
#
2676-
# Credentials: TURBO_TOKEN (secret) is passed only when the signing key
2671+
# turbo configuration, not a property of the credential: the token can
2672+
# write and the signing key can sign whatever holds them, which is why
2673+
# the two secrets below are scoped by event rather than trusted to it.
2674+
# ⚠️ Never let it evaluate to '': turbo then disables the LOCAL cache
2675+
# too (`no caches are enabled`) and re-executes everything.
2676+
#
2677+
# Credentials go only to runs whose code has landed or is landing:
2678+
# `merge_group`, and any run on refs/heads/main (push, the hourly
2679+
# schedule, workflow_dispatch on main). A `pull_request` run, and a
2680+
# dispatch on any other branch, receives neither TURBO_TOKEN nor the
2681+
# signing key, so code a PR adds can neither upload to the remote nor
2682+
# sign an artifact that a queue or main build would replay. Such a run
2683+
# builds from the restored Actions-cache seed (local:rw) and the
2684+
# assertion step reports the remote as withheld, never as broken.
2685+
# TURBO_TOKEN (secret) is further passed only when the signing key
26772686
# is non-empty, because an empty key still "signs" with a zero-length
26782687
# HMAC key; TURBO_TEAM is a repo VARIABLE so the slug is not masked out
26792688
# of the log; TURBO_REMOTE_CACHE_SIGNATURE_KEY (secret) must equal
@@ -2718,9 +2727,9 @@ jobs:
27182727
- name: Build packages (excluding docs)
27192728
env:
27202729
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
2721-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
2730+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
27222731
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
2723-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
2732+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
27242733
run: pnpm build --summarize --log-file=.turbo/remote-cache/build-core.json
27252734

27262735
- name: The Turbo remote cache was on for the build

‎.github/workflows/docker-publish.yml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,21 @@ jobs:
5757
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
5858
5959
- name: Set up QEMU (arm64 emulation)
60-
uses: docker/setup-qemu-action@v4
60+
uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
6161

6262
- name: Set up Docker Buildx
63-
uses: docker/setup-buildx-action@v4
63+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
6464

6565
- name: Log in to ghcr.io
66-
uses: docker/login-action@v4
66+
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4.7.0
6767
with:
6868
registry: ghcr.io
6969
username: ${{ github.actor }}
7070
password: ${{ secrets.GITHUB_TOKEN }}
7171

7272
- name: Compute image tags
7373
id: meta
74-
uses: docker/metadata-action@v6
74+
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
7575
with:
7676
images: ${{ env.IMAGE }}
7777
# Tag = CLI version. Rolling minor/major/latest tags move with every
@@ -83,7 +83,7 @@ jobs:
8383
type=raw,value=latest,enable=${{ !contains(steps.version.outputs.version, '-') }}
8484
8585
- name: Build and push
86-
uses: docker/build-push-action@v7
86+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
8787
with:
8888
context: docker
8989
platforms: linux/amd64,linux/arm64

‎.github/workflows/lint.yml‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5786,9 +5786,9 @@ jobs:
57865786
- name: Build workspace packages
57875787
env:
57885788
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
5789-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
5789+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
57905790
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
5791-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
5791+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
57925792
run: pnpm exec turbo run build --filter='./packages/*' --filter='./examples/*^...' --summarize --log-file=.turbo/remote-cache/typecheck-workspace.json
57935793

57945794
# ci.yml Build Core's "Turbo remote cache (#21186)" comment, ASSERTED
@@ -6049,9 +6049,9 @@ jobs:
60496049
- name: Build workspace packages
60506050
env:
60516051
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
6052-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
6052+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
60536053
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
6054-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
6054+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
60556055
run: pnpm exec turbo run build --filter='./packages/*' --filter='./examples/*^...' --summarize --log-file=.turbo/remote-cache/typecheck-debt.json
60566056

60576057
# ci.yml Build Core's "Turbo remote cache (#21186)" comment, ASSERTED
@@ -6124,9 +6124,9 @@ jobs:
61246124
- name: Build the ledgered packages' dependencies
61256125
env:
61266126
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
6127-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
6127+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
61286128
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
6129-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
6129+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
61306130
run: pnpm exec turbo run build --filter='./packages/*' --filter='./packages/*/*'
61316131

61326132
# [#15042] The closure-wide declaration re-check. `check-dts-emitted` runs
@@ -6257,9 +6257,9 @@ jobs:
62576257
- name: Build workspace packages
62586258
env:
62596259
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
6260-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
6260+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
62616261
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
6262-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
6262+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
62636263
run: pnpm exec turbo run build --filter='./packages/*' --filter='./examples/*^...' --summarize --log-file=.turbo/remote-cache/typecheck-consumers.json
62646264

62656265
# ci.yml Build Core's "Turbo remote cache (#21186)" comment, ASSERTED
@@ -6290,9 +6290,9 @@ jobs:
62906290
- name: Build the nested packages the consumer gates resolve through
62916291
env:
62926292
TURBO_CACHE: ${{ (github.event_name == 'merge_group' || ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main')) && 'local:rw,remote:rw' || 'local:rw,remote:r' }}
6293-
TURBO_TOKEN: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
6293+
TURBO_TOKEN: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '' && secrets.TURBO_TOKEN || '' }}
62946294
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
6295-
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
6295+
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ (github.event_name == 'merge_group' || github.ref == 'refs/heads/main') && secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY || '' }}
62966296
run: pnpm exec turbo run build --filter='./packages/*' --filter='./packages/*/*'
62976297

62986298
# Same sweep as `typecheck-debt`'s step of this name (#15042, #7668, #12078).

0 commit comments

Comments
 (0)