Skip to content

fix(release): allow publishing with no tag; publish one package at a time#1688

Merged
lucasmcdonald3 merged 7 commits into
v4.xfrom
fix-v4.x-dist-tag
Jul 24, 2026
Merged

fix(release): allow publishing with no tag; publish one package at a time#1688
lucasmcdonald3 merged 7 commits into
v4.xfrom
fix-v4.x-dist-tag

Conversation

@lucasmcdonald3

@lucasmcdonald3 lucasmcdonald3 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Issue #, if available:

Description of changes:

  1. When dist_tag is empty, do not publish a tag. (Current behavior is to pass an empty dist_tag to the npm CLI, which the CLI interprets as "set latest tag", which we don't want.)
  2. Publish one package at a time. Releasing packages in parallel submits many provenance attestations to Rekor (npm publish signing logbook) at once. Submissions to Rekor can time out and be retried. If the first attempt succeeded, the retry fails, then indicates "failure" to npm, and npm doesn't attempt to publish the package. Setting --concurrency 1 serializes publishes so only one attestation is in flight at a time, (possibly, hopefully) reducing those timeout-induced 409s.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Check any applicable:

  • Were any files moved? Moving files changes their URL, which breaks all hyperlinks to the files.

v4.x is a maintenance line, so defaulting to 'latest' is wrong (it points
npm install at 4.x instead of 5.x). Make dist_tag required with no default
and fail fast if it's empty, before the version bump is pushed.
@lucasmcdonald3
lucasmcdonald3 requested a review from a team as a code owner July 23, 2026 19:12
Instead of requiring a tag, when dist_tag is empty run lerna publish
without --dist-tag. Modern npm won't move the 'latest' tag when publishing
a lower version, so 4.x maintenance releases don't hijack latest.
@lucasmcdonald3 lucasmcdonald3 changed the title fix(release): require an explicit dist-tag on v4.x fix(release): omit --dist-tag when empty so latest isn't moved Jul 23, 2026
@lucasmcdonald3
lucasmcdonald3 requested a review from Copilot July 23, 2026 19:20
@lucasmcdonald3 lucasmcdonald3 changed the title fix(release): omit --dist-tag when empty so latest isn't moved fix(release): omit --dist-tag when the input is deleted Jul 23, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Updates the production release workflow to avoid unintentionally moving the latest npm dist-tag when the dist_tag input is empty by omitting --dist-tag entirely.

Changes:

  • Clarifies the dist_tag workflow input description to indicate empty value publishes without an explicit dist-tag.
  • Adds conditional logic to run lerna publish with --dist-tag only when DIST_TAG is non-empty.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/prod-release.yml Outdated
Comment thread .github/workflows/prod-release.yml
Lucas McDonald added 4 commits July 23, 2026 20:24
Serialize package publishes so we don't submit 27 provenance attestations to
the Rekor transparency log in parallel, reducing timeout-induced 409s.
@lucasmcdonald3 lucasmcdonald3 changed the title fix(release): omit --dist-tag when the input is deleted fix(release): allow publishing with no tag; publish one package at a time Jul 23, 2026
@lucasmcdonald3
lucasmcdonald3 merged commit 0ea28f8 into v4.x Jul 24, 2026
34 checks passed
@lucasmcdonald3
lucasmcdonald3 deleted the fix-v4.x-dist-tag branch July 24, 2026 01:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants