ci: run release on Node, not Deno (fix release regression)#96
Merged
Conversation
@sebbo2002/semantic-release-jsr shell-spawns its own downloaded `deno publish`, and that spawn's args get mangled by Deno's child_process Node-compat layer — so after #95 moved semantic-release onto `deno run`, the publish failed with "unrecognized subcommand". Restore the Node host (actions/setup-node + npx), keeping the supply-chain hardening by pinning every npx package to an exact version (jsr plugin stays 3.2.1). The SHA-pinned actions, contents:read token, and minimumDependencyAge from #95 are unchanged; the semantic-release imports #95 added to deno.json are removed since npx fetches the tooling again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Fixes the release regression introduced by #95. The
Releasejob failed on themainpush (run):Root cause:
@sebbo2002/semantic-release-jsrdownloads its own Deno binaryand
shell: true-spawnsdeno publish. Under Deno's Nodechild_processemulation that spawn mangles the args (the subcommand token gets concatenated),
so
denoreports a valid subcommand as "unrecognized". #95 had movedsemantic-release from
npx(real Node) ontodeno run; this plugin is built fora Node host and only works there. The Deno-native move was right for
semantic-release core but wrong for this one plugin.
Changes
actions/setup-node+npx.npx --packageto anexact version (jsr plugin stays
3.2.1;npm:semantic-release@25.0.5etc.).npx has no lockfile, so the exact version is the pin.
deno.json(npx fetchesthe tooling) —
minimumDependencyAge, the SHA-pinned actions,cache: falseon the publish job, and the
contents: readtoken from ci: harden release pipeline against supply-chain #95 all stay.Testing
Locally on this branch with the exact pinned
npx … semantic-release --dry-rununder Node v24.14: all six plugins load with no version/engine conflict. This
restores the exact npx-under-Node configuration that published every release
through
0.8.0; #95's only release-execution change (npx→deno run) is whatbroke it, and that's what's reverted.
Follow-up
For full transitive integrity on the npx path, a committed
package-lock.json+npm ciwould pin beyond the direct packages. Left as a follow-up to keep thisfix minimal.