ci: run the OIDC publish jobs in the release environment - #6167
Merged
Conversation
publish-python and publish-js mint an OIDC token with no environment named, so nothing gates the ref the token is minted from. Both now join `release`, whose deployment policy admits only `*.*.*` tags and which now requires a maintainer approval. publish-js takes the conditional form `publish-to-cargo` already uses, since it also runs off-release as a `--dry-run` on a branch ref the policy denies. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
prql-bot
approved these changes
Aug 8, 2026
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.
publish-pythonandpublish-jsrequestid-token: writewithout naming an environment, so nothing gates the ref their OIDC token is minted from. Both now joinrelease, whose deployment policy admits only*.*.*tags.publish-jstakes the conditional formpublish-to-cargoalready uses, because it also runs off-release as a--dry-runon a branch ref the policy denies.Alongside this, the
releaseandgithub-pagesenvironments now require approval from a maintainer (@snth, @max-sixty, @aljazerzen, @eitsupi — the members ofprql-team, named individually so the check can verify the bot isn't among them). "Prevent self-review" is off, so whoever cuts the release can approve it, and only one of the four needs to.A reviewer is the only gate available here. A deployment branch policy can't do the job for either environment:
github.event_name == 'release', and a write-scoped account can publish a release against a tag that already exists, which takes no tag operation and lands on a ref the*.*.*policy admits.github-pagesdeploys from thewebbranch, which the release pushes with a PAT, so the bot can reach that ref by design.At release time the run now pauses at these jobs with a "Review deployments" prompt.
One thing to watch on the first release under this: PyPI and npm trusted publishing check the environment claim only when the publisher config on their side names one. Both are currently published from no environment, so the config can't be naming one — but if a publish fails to authenticate, that's the setting to check.
This clears tend's
credential-environments.repo-secret-allowliststill fails on the repo-levelTEND_BOT_TOKEN; that one needs every consumer moved into an environment first, which is a larger change.