From 30615e5350cbedde151b133bafb7b9d65592498c Mon Sep 17 00:00:00 2001 From: Chrison Simtian Date: Wed, 9 Sep 2026 13:19:47 +1200 Subject: [PATCH] Install the Node toolchain before promoting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both promotion jobs failed resolving vsce and ovsx. --skip PackVsix prunes the whole upstream chain, RestoreVsix included, because nothing else needs it — so npm ci never ran and the CLIs, being dev dependencies, were simply absent. It failed before reaching either registry, so nothing was published and the version was not consumed. Only a real promotion could surface this; every rehearsal so far stopped at the approval gate. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/publish.yml | 12 ++++++++++++ docs/ci.md | 1 + 2 files changed, 13 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9d35e93..b3d51a7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -212,6 +212,12 @@ jobs: - uses: actions/download-artifact@v8 with: name: fallout-vsix + # The publish CLIs are dev dependencies, and IHasVsix.ResolveNodeTool looks for + # them in node_modules/.bin before PATH. --skip PackVsix below prunes the whole + # upstream chain — RestoreVsix ("npm ci") included, since nothing else needs it — + # so without this the tools are simply absent and PublishVsix dies resolving them. + - name: 'Install the Node toolchain' + run: npm ci # --skip PackVsix publishes the exact artifact that was packed and validated, # rather than rebuilding it here and publishing bits nothing has seen. - name: 'Fallout build (PublishVsix → vs-marketplace)' @@ -247,6 +253,12 @@ jobs: - uses: actions/download-artifact@v8 with: name: fallout-vsix + # The publish CLIs are dev dependencies, and IHasVsix.ResolveNodeTool looks for + # them in node_modules/.bin before PATH. --skip PackVsix below prunes the whole + # upstream chain — RestoreVsix ("npm ci") included, since nothing else needs it — + # so without this the tools are simply absent and PublishVsix dies resolving them. + - name: 'Install the Node toolchain' + run: npm ci - name: 'Fallout build (PublishVsix → open-vsx)' run: ./build.sh PublishVsix --publish-vsix-to open-vsx --skip PackVsix env: diff --git a/docs/ci.md b/docs/ci.md index d7df871..d9576ed 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -108,3 +108,4 @@ To run the extension itself rather than the build, see [developing.md](developin - **`PublicRelease: true`** is set on any job that checks out a tag. A detached HEAD matches none of `version.json`'s branch refspecs, so without it Nerdbank.GitVersioning appends a git-height suffix and the marketplace version stops being a clean triple. - **`fetch-depth: 0`** is required wherever the version is computed — NB.GV needs full history. - **Boolean workflow inputs arrive as strings** from the REST API, and therefore from `gh workflow run`. Conditions compare against both `true` and `'true'`; a bare `== true` silently skips while reporting success. +- **`--skip PackVsix` prunes the whole upstream chain**, `RestoreVsix` included — nothing else needs it, so Fallout skips it too. The promotion jobs therefore install the Node toolchain themselves: `vsce` and `ovsx` are dev dependencies, and `IHasVsix.ResolveNodeTool` looks in `node_modules/.bin` before `PATH`. Without that step `PublishVsix` fails resolving its tools before it reaches a registry — which is exactly how the first promotion of v10.4.31 failed.