Repository navigation
Conversation
…age.json The determine-changes job's ad-hoc `npm install --no-save simple-git chalk semver zod tsx` runs at the consuming repo's root, so npm's arborist parses that repo's own package.json/workspace members as part of resolving the install - unrelated to what's being installed. A repo using pnpm's `workspace:*` protocol (which plain npm doesn't understand) fails there with EUNSUPPORTEDPROTOCOL before change detection ever runs, breaking every downstream job (package, bump-versions, create-releases, publish). Install into an isolated `mktemp -d` prefix instead, and point NODE_PATH at it when running the downloaded script - fully independent of the consuming repo's dependency graph regardless of its package manager or specifier syntax. Verified against forcedotcom/salesforcedx-vscode@c8d281a9e (the exact commit that triggered this in CI): old command reproduces EUNSUPPORTEDPROTOCOL there; new command runs change detection to completion.
Contributor
Author
|
Superseded by #195, which was merged to main while this was in review — same root cause (npm install --no-save at the repo root chokes on workspace:* before change detection runs), independently discovered via a different consuming repo. #195's approach is slightly cleaner (co-locates the downloaded script with its isolated deps so Node's normal node_modules resolution just works, no NODE_PATH needed, plus it cleans up its temp dir). Closing in favor of that. |
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
determine-changes(invscode-publish-extensions.yml) runsnpm install --no-save simple-git chalk semver zod tsxdirectly at the consuming repo's root, so npm's arborist parses that repo's ownpackage.json/workspace members as part of resolving the install, even though those packages have nothing to do with the repo's own dependency graph.workspace:*protocol (which plain npm's arborist doesn't understand) fails there withEUNSUPPORTEDPROTOCOL, before change detection ever runs — which skips every downstream job (package,bump-versions,Create GitHub Releases,publish).forcedotcom/salesforcedx-vscode's nightly pipeline has been failing since #8396 merged (switched several internal deps toworkspace:*) — see run 38001111461.Fix
Install into an isolated
mktemp -dprefix instead of the repo root, and pointNODE_PATHat it when running the downloaded script — fully independent of the consuming repo's dependency graph regardless of its package manager or specifier syntax.Verification
Reproduced and verified against
forcedotcom/salesforcedx-vscode@c8d281a9e(the exact commit that triggered this in CI), in a disposable worktree:npm install --no-save simple-git@3.27.0 ...): reproducesEUNSUPPORTEDPROTOCOLexactly as seen in CI.NODE_PATH): runs change detection to completion, producing correctselected-extensions/version-bumpsoutputs.Test plan
nightly.ymlonforcedotcom/salesforcedx-vscode(currently pinned to@main) to confirmdetermine-changessucceeds end-to-end