Skip to content

feat(publish): release via App token, publish to PyPI and public npm - #14

Open
ciaransweet wants to merge 1 commit into
mainfrom
ci/split-publish-workflow
Open

feat(publish): release via App token, publish to PyPI and public npm#14
ciaransweet wants to merge 1 commit into
mainfrom
ci/split-publish-workflow

Conversation

@ciaransweet

@ciaransweet ciaransweet commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Publishing moves out of the release-please job and into an on: release workflow.

That only works because release-please now authenticates as the DS release bot rather than GITHUB_TOKEN — GitHub suppresses workflow events for anything GITHUB_TOKEN does, so the release it used to create never triggered anything, which is why npm publishing had to be inlined.

PyPI

Trusted publishing via OIDC. The workflow's filename and environment are load-bearing: the registered pending publisher names publish.yaml / release, so the file moves off .yml and the environment off pypi. Changing either here without changing it on PyPI first fails with an OIDC claim mismatch.

Drops publish-pypi.yml, an if: false placeholder for exactly this.

npm

@developmentseed/mcp-view moves from GitHub Packages to public npm, also via trusted publishing. Consuming UIs no longer need an .npmrc or a GITHUB_TOKEN with read:packages, so:

  • the scaffold stops writing ui/.npmrc
  • docs/CONSUMING.md §3b drops the registry setup
  • package.json gains "access": "public" — scoped packages default to restricted on npmjs and the first publish fails without it

The npm install -g npm@latest step is load-bearing, not defensive: Node 22 ships npm 10 and trusted publishing needs >= 11.5.1.

🤖 Generated with Claude Code

Publishing now hangs off an `on: release` workflow instead of being inlined
in the release-please job. That only works because release-please
authenticates as the DS release bot rather than GITHUB_TOKEN — GitHub
suppresses workflow events for anything GITHUB_TOKEN does, so the release it
used to create never triggered anything.

The workflow's filename and environment are load-bearing: PyPI's registered
trusted publisher names `publish.yaml` / `release`, so the file moves off
.yml and the environment off `pypi`. Drops publish-pypi.yml, an `if: false`
placeholder for exactly this.

Moves @developmentseed/mcp-view from GitHub Packages to public npm, also via
OIDC trusted publishing. Consuming UIs no longer need an .npmrc or a
GITHUB_TOKEN with read:packages, so the scaffold stops writing one and
CONSUMING.md drops the registry setup. Node 22 ships npm 10, so the job
upgrades npm — trusted publishing needs >= 11.5.1.

Also corrects uv.lock, which still recorded 0.1.0 against a 0.1.2 pyproject.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ciaransweet
ciaransweet requested a review from alukach July 28, 2026 20:44

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I generally like to split publishing to pypi and to npm in case only one of them fails to publish, and I only want to trigger one of them to restart.

Though I suppose having them in one yaml doesn't actually prevent that workflow?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yeah, I think these will run in parallel

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yeah, I think these will run in parallel

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