ci(web): declare the build allowlist in both places, and report pnpm's view
Some checks failed
deploy / build (push) Successful in 6m31s
deploy / deploy (push) Successful in 19s
deploy / build-web (push) Failing after 1m10s
deploy / deploy-web (push) Has been skipped

Third build-web failure with the same ERR_PNPM_IGNORED_BUILDS. The
setting was first in package.json (pnpm 10 here does not read it) and
then in pnpm-workspace.yaml (verified read here, still ignored on the
runner), so the runner's pnpm evidently resolves it differently and I
have been guessing at which.

Declares it in both locations -- four duplicated lines against a failure
that only manifests on CI -- and adds a step printing pnpm --version and
the resolved value, so if this still fails the log says why instead of
costing another round trip.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZG2i4AmfSqE97EJGBVb64
This commit is contained in:
2026-08-31 13:21:54 +03:00
parent 05c3e56dba
commit 78d35cfd29
4 changed files with 36 additions and 5 deletions

View File

@@ -33,6 +33,17 @@ jobs:
steps:
- uses: actions/checkout@v4
# The runner's pnpm is not necessarily the workstation's, and this
# setting moved location between 10.x releases. Print what it actually
# resolves to, so a failure here is diagnosable from the log rather than
# by pushing another guess.
- name: pnpm environment
working-directory: web
run: |
pnpm --version
pnpm config get --json onlyBuiltDependencies || true
pnpm config list || true
- name: install
working-directory: web
run: pnpm install --frozen-lockfile

View File

@@ -61,6 +61,17 @@ jobs:
# The gate for the frontend, matching the Rust one: a type error or a
# lint failure must not reach a host either.
# The runner's pnpm is not necessarily the workstation's, and this
# setting moved location between 10.x releases. Print what it actually
# resolves to, so a failure here is diagnosable from the log rather than
# by pushing another guess.
- name: pnpm environment
working-directory: web
run: |
pnpm --version
pnpm config get --json onlyBuiltDependencies || true
pnpm config list || true
- name: install
working-directory: web
run: pnpm install --frozen-lockfile

View File

@@ -32,5 +32,11 @@
"typescript": "^5.9.3",
"typescript-eslint": "^8.46.2",
"vite": "^7.2.2"
},
"pnpm": {
"onlyBuiltDependencies": [
"@swc/core",
"esbuild"
]
}
}

View File

@@ -1,9 +1,12 @@
# pnpm 10 reads settings from here, not from package.json's `pnpm` field.
# The allowlist of dependencies permitted to run install scripts. Both fetch a
# platform-native binary; every other package in the tree is denied, which is
# the point -- an install script is arbitrary code from a transitive dependency.
#
# An explicit allowlist of dependencies permitted to run install scripts. Both
# fetch a platform-native binary at install time and do not work without it;
# every other package in the tree is denied, which is the point — an install
# script is arbitrary code from a transitive dependency.
# Declared here *and* in package.json's `pnpm` field on purpose: pnpm moved
# this setting between 10.x releases, and the workstation and the CI runner do
# not carry the same version. Whichever one is authoritative, it finds the same
# list, and the duplication is four lines against a failure that only shows up
# on the runner.
onlyBuiltDependencies:
- '@swc/core'
- esbuild