fix(ci): create git tags and GitHub releases for JS package publishes - #15732
Merged
Conversation
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Contributor
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
`ci:publish` used `pnpm publish -r`, but changesets/action discovers what was published from the newline-delimited JSON the publish script writes to `$CHANGESETS_OUTPUT`, reading the `git-tag` events out of it. `pnpm publish` never writes that file, so the released-package list was always empty, the `create-github-releases` loop iterated zero times, and the action reported `published: false`. The npm publishes themselves have always succeeded — but no JS package has ever been tagged or given a GitHub release. `git for-each-ref refs/tags` contains zero `@arizeai/*` tags; every tag in the repo comes from release-please. Switch `ci:publish` to `changeset publish`, which emits those events and tags each published package. Two changes come with it: - `access` in the changesets config was `restricted`, unused because the old script passed `--access public` explicitly. `changeset publish` does honor it, so it has to become `public`. - `changeset publish` builds its own publish flags and never passes `--provenance`, so request provenance through npm config instead. The workflow already grants `id-token: write`. Note this does not backfill: the 6 packages' current versions stay untagged, and tagging starts from the next release.
mikeldking
force-pushed
the
mikeldking/changesets-github-releases
branch
from
August 29, 2026 01:09
76738cd to
780cf5d
Compare
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.
Problem
createGithubReleases: truein the TypeScript publish workflow has never done anything. No@arizeai/*package has ever been tagged or given a GitHub release —git for-each-ref refs/tagscontains zero of them, and every tag in the repo comes from release-please.The cause is that
ci:publishusedpnpm publish -rrather thanchangeset publish.changesets/actiondiscovers what was published only by regex-scanning the publish script's stdout forchangeset publish's marker lines (src/run.ts:102at our pinned v1.5.2):pnpm publishnever printsNew tag:, soreleasedPackagesstayed empty, the release loop iterated zero times, and the action reportedpublished: false.Confirmed on run 33192427434 (the
chore(js): update versionsmerge for #15704):npm publish succeeded, then the job ended — no
New tag:, no tag push, no release API call.Fix
Switch
ci:publishtochangeset publish, which tags each published package and emits the marker lines the action looks for. Two changes come along necessarily:accessmust becomepublic. It wasrestrictedin the changesets config but unused, because the old script passed--access publicexplicitly.changeset publishdoes honor the config value (access: publishConfig?.access || access), so leaving it would attempt restricted publishes.changeset publishbuilds its own publish flags and never passes--provenance, soNPM_CONFIG_PROVENANCE: truerequests it instead.id-token: writeis already set at job level.Verification
@arizeai/phoenix-{cli,client,config,evals,mcp,otel}packages are non-private, sochangeset publishtargets exactly the right set.app,examples/apps/*,benchmarks/*andphoenix-testingare all private.toolresolves non-root, so tags are@arizeai/phoenix-client@7.5.0-style, matching the action's regex.oxfmt --checkpasses on both JSON files;ci:publishkeeps its alphabetical slot underexperimentalSortPackageJson.sortScripts.ci:publishhas exactly one consumer. The experimental workflow usespkg-pr-new publishand is untouched.exclude-pathsfor the root component covers both.githubandjs, so this commit won't bump any Python package.changeset status.Two things to know
Provenance can't be verified before merge.
changeset publishhas no--dry-runand provenance needs CI's OIDC, so the first release after this merges is the test. Check the npm page for the provenance badge; if it's missing, the fallback is"publishConfig": { "provenance": true }in each of the 6 package.json files, which npm reads directly. Worst case is one version shipping without an attestation.This does not backfill.
changeset publishonly tags what it publishes in a given run, so the 6 packages' current versions stay untagged permanently. Tagging starts from the next release. Backfilling the existing versions would be a separate one-off.Low blast radius on the publish step itself:
changeset publishqueries npm per package and skips versions already there, so a failure doesn't double-publish and a re-run finishes the job.