Repository navigation
Conversation
Publish on release:published from release.yml instead of on every push to master, so the npm trusted publisher can be keyed on the filename and a person creating the GitHub release is what publishes; drop the NPM_TOKEN passed to JS-DevTools/npm-publish in favour of id-token: write (OIDC), run on Node 24 with npm@latest (trusted publishing needs npm >= 11.5.1), check out the release tag without persisted credentials. The auto-tag and create-release steps go away with the trigger; the tarball is attached to the release from a separate job with gh release upload instead of the archived upload-release-asset action. GitHub pre-releases go to the beta dist-tag. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The workflow must verify that the release tag matches the package version before publishing.
Review effort: Balanced
Findings: 1
What changed in this PR
Reworks npm releases to use GitHub OIDC trusted publishing.
Changes:
- Publishes on GitHub release events using Node 24.
- Routes prereleases to
betaand stable releases tolatest. - Uploads the packed package as a release asset.
| File | Description |
|---|---|
.github/workflows/release.yml |
Replaces token-based publishing and archived actions with OIDC publishing and gh asset upload. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Refuse to publish when the release tag is not "v" + the package.json version, so a tag cut on the wrong commit cannot publish an older version under a newer tag. The tag now reaches the upload step through the RELEASE_TAG env variable instead of being interpolated into the shell line (GitHub Actions script-injection hardening). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lodash 4.17.21 -> 4.18.1 (package.json ^4.17.21 -> ^4.18.1; lock file regenerated from a clean install). Snyk (production deps): 3 findings -> 0 - SNYK-JS-LODASH-15869625 (high, arbitrary code injection) - SNYK-JS-LODASH-15869619 (medium, prototype pollution) - SNYK-JS-LODASH-15053838 (medium, prototype pollution) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
# Conflicts: # .github/workflows/release.yml # package-lock.json
Lock file regenerated (fixed 8 on its own: handlebars critical; brace-expansion, browserslist, js-yaml, linkify-it, markdown-it high; baseline-browser-mapping moderate; @babel/core low; all dev tooling). Direct upgrades: none (what remains needs jest 30 / node-notifier 11 majors) Overrides: none Talisman: package-lock.json checksum entry replaced by a filecontent + base64content ignore, so the next regen does not trip the scan. Vuln count: snyk 0 → 0, npm audit 15 → 7. Build verified passing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
99a92d7
🔒 Security Scan Results
⏱️ SLA Breach Summary
✅ BUILD PASSED - All security checks passed |
1 similar comment
🔒 Security Scan Results
⏱️ SLA Breach Summary
✅ BUILD PASSED - All security checks passed |

Problem
release.ymlondevelopmentstill publishes@contentstack/datasync-mongodb-sdkon every push tomasterwith a long-livedNPM_TOKENthroughJS-DevTools/npm-publish@v3, then tags, creates the GitHub release and attaches the tarball with archived actions (themastercopy is release-triggered, same token).The SE1 publishing policy requires OIDC trusted publishing instead: no token, a
release.ymlworkflow that runs when a release is published, Node 24.Fix
release.ymlis rewritten in place. What changes inside it:pushtomasterrelease: published— creating the GitHub release is what publishesNPM_TOKENviaJS-DevTools/npm-publish@v3id-token: write, no token, plainnpm publishnpm publish --access public; pre-releases go to thebetadist-tag, releases tolatestKlemensas/action-autotag,actions/create-release@v1(archived)actions/upload-release-asset@v1(archived) inside the publish jobupload-release-assetjob, runs after a successful publish:npm pack+gh release upload --clobberwith the job tokennpm install(+npm install npm-pack)npm cipersist-credentials: falsecheckout@v4,setup-node@v4@v7Verification
Node 22 and Node 24: install, build, unit tests and
npm packall pass.