Repository navigation
Conversation
…l without scripts
Contributor
Author
Review (maintainer's agent, round 1)No blocking findings.
Notes, no change needed: the Playwright browser revision follows the locked |
V3RON
added this pull request to stack #897
October 23, 2026 06:19
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two CI hardening fixes. The Release workflow no longer puts
GITHUB_TOKENin the push URL. The website job now installs dependencies with--ignore-scripts, like every other job. The Playwright browser installs stay as they are (see Verified).Changes
.github/workflows/release.yml(Push step): the remote is now plainhttps://github.com/${GITHUB_REPOSITORY}.git. The token goes as anAUTHORIZATION: basic base64(x-access-token:<token>)extraheader. It is set through git'sGIT_CONFIG_COUNT/GIT_CONFIG_KEY_0/GIT_CONFIG_VALUE_0environment variables, notgit -c. A-cvalue still lands in git's argv, so the base64 credential would show in the process list just like the old URL did. The base64 value is also passed to::add-mask::, because Actions masks only the raw token.--atomic,--force-with-lease="refs/heads/main:$GITHUB_SHA"and the existing# why:comment are kept, and a# why:line explains the new form..github/workflows/website.yml:pnpm install --frozen-lockfilebecomespnpm install --frozen-lockfile --ignore-scripts.src/source-hygiene.test.ts: new checks over every tracked workflow. Everypnpm installmust pass--ignore-scripts. No URL may hold a credential (scheme://…@). The Release push must send the token through theGIT_CONFIG_*extraheader, keep it out of thegit pushcommand, and keep--atomic, the lease and the commit+tag refspecs. All checks failed onmain's workflows and pass now.Verified
src/git-auth-helper.tsat v7.0.1, the version this repo pins, does this: config keyhttp.${serverUrl.origin}/.extraheader, valueAUTHORIZATION: basic ${base64("x-access-token:" + token)}, andcore.setSecreton the base64 value. Our key, value and masking match. One difference: checkout writes the header into the local git config file, while this step passes it through the environment, so nothing is left on disk.Authorizationheader and rangit push(git 2.53) with only theGIT_CONFIG_*variables set. The server gotbasic eC1hY2Nlc3MtdG9rZW46ZmFrZS10b2tlbi0xMjM=, which decodes tox-access-token:fake-token-123.GIT_CONFIG_COUNTneeds git 2.31 or later; ubuntu-24.04 runners ship a newer git.pnpm --dir website install --frozen-lockfile --ignore-scripts && pnpm --dir website build && node website/scripts/check-openapi.mjs, run on a freshwebsite/node_modules: 72 pages built, andcheck-openapi: 30 operations, 9 tags: ok. sharp, esbuild and astro needed no install script. Note thatwebsite/pnpm-workspace.yamlhas noallowBuilds, so pnpm 11 was already skipping dependency build scripts there. The flag mostly makes this explicit and matches the other jobs.ci.ymlandreal-proxy.ymlplaywright install --with-deps chromium, unchanged).pnpm-lock.yamllocksplaywright/playwright-coreat 1.63.0. Thebrowsers.jsonin that package fixes Chromium at revision 1243 (Chrome for Testing 153.0.8010.12), andplaywright install --dry-run chromiumresolves exactly that build. So the browser follows the locked version. The apt packages from--with-depsstay unpinned, which is expected.pnpm exec vitest run --project unit src/source-hygiene.test.ts: 16 passed.pnpm test:changed: 16 passed. The commit hook passed (comments, lint, format, boundaries, typecheck).Assumptions
GIT_CONFIG_*environment variables instead of the suggestedgit -c "http…extraheader=…". The-cform would still put the base64 token in git's argv, which is the exposure this change removes.Written by an agent.