Skip to content

ci: make npm publish dist-tag an explicit choice - #1348

Merged
msluszniak merged 2 commits into
mainfrom
@ms/publish-dist-tag
Aug 4, 2026
Merged

ci: make npm publish dist-tag an explicit choice#1348
msluszniak merged 2 commits into
mainfrom
@ms/publish-dist-tag

Conversation

@msluszniak

@msluszniak msluszniak commented Aug 4, 2026

Copy link
Copy Markdown
Member

Description

Previously publish without latest checked published as nightly. But sometimes we want to publish new legacy version. This PR adds this possibility.

Introduces a breaking change?

  • Yes
  • No

Type of change

  • Bug fix (change which fixes an issue)
  • New feature (change which adds functionality)
  • Documentation update (improves or adds clarity to existing documentation)
  • Other (chores, tests, code style improvements etc.)

Tested on

  • iOS
  • Android

Testing instructions

Actions → NPM publish → Run workflow. The form now shows a release-type dropdown with nightly / latest / legacy instead of a checkbox.

Screenshots

Related issues

Checklist

  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have updated the documentation accordingly
  • My changes generate no new warnings

Additional notes

Same change is backported to release/0.8 in a companion PR so 0.8.5 can be published under legacy.

The `latest-build` boolean had only two outcomes: true published under
`latest`, and *anything else* fell through to nightly - both the
`executorch-nightly` dist-tag and a rewritten `x.y.z-nightly-<sha>-<date>`
version. There was no way to dispatch a `legacy` publish for a maintenance
release, and picking "not latest" silently produced a nightly instead.

Replace it with a `release-type` choice (nightly / latest / legacy) that
maps to the dist-tag directly. Only `nightly` rewrites the version. The
scheduled run passes no inputs, so RELEASE_TYPE defaults to nightly.
A single `legacy` dist-tag only points at one version, so once 0.9 takes it
over, a later 0.8 patch published as `legacy` would demote 0.9 back down.

Add an optional free-text `dist-tag` input for line-scoped tags like `v0.8`,
so each maintenance line keeps a stable install target and nothing has to
share `legacy`. Publishing under a throwaway tag and removing it afterwards
is not an option here: npm's OIDC trusted publishing authorizes `npm publish`
only, so a follow-up `npm dist-tag rm` has no credentials and the junk tag
would stick around.

The override moves the dist-tag only - the version still comes from
release-type - so combining it with nightly is rejected, as is anything npm
would refuse as a dist-tag.
@msluszniak
msluszniak merged commit 2558259 into main Aug 4, 2026
6 checks passed
@msluszniak
msluszniak deleted the @ms/publish-dist-tag branch August 4, 2026 14:14
msluszniak added a commit that referenced this pull request Aug 4, 2026
## Description

Previously publish without `latest` checked published as nightly. But
sometimes we want to publish new legacy version. This PR adds this
possibility.

### Introduces a breaking change?

- [ ] Yes
- [x] No

### Type of change

- [x] Bug fix (change which fixes an issue)
- [ ] New feature (change which adds functionality)
- [ ] Documentation update (improves or adds clarity to existing
documentation)
- [ ] Other (chores, tests, code style improvements etc.)

### Tested on

- [ ] iOS
- [ ] Android

### Testing instructions

Actions → NPM publish → Run workflow → ref `release/0.9`. The form now
shows a `release-type` dropdown with `nightly` / `latest` / `legacy`
instead of a checkbox.

### Screenshots

### Related issues

### Checklist

- [x] I have performed a self-review of my code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have updated the documentation accordingly
- [x] My changes generate no new warnings

### Additional notes

Backport of #1348, staged so 0.9 is ready when 0.10 takes over `latest`.
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.

2 participants