Repository navigation
THRIFT-6327: Document the credentials the release workflows need in one place - #3912
Merged
Merged
Conversation
…ne place Client: build Six workflows publish something when a GitHub release is published: pypi.yml, release_ruby.yml, release_rust.yml, dotnet-tool.yml, winget.yml and chocolatey.yml. Between them they need one repository variable, two repository secrets and four trusted publishing policies on the receiving side. Every one of those was documented, and no two of them in the same place: CHOCO_API_KEY inside the Chocolatey prose, WINGET_TOKEN inside the WinGet prose, the NuGet policy and NUGET_USER inside a bullet under Third Party Package Managers, the PyPI policy inside another bullet, and the crates.io and RubyGems ones nowhere at all. A release manager preparing their first release had no way to find out what has to be set up other than reading the whole document. ReleaseManagement.md gains a Release Automation Credentials section listing each one: what it is, whether it is a secret or a variable, which workflow consumes it, and what happens when it is missing. The per package prose stays where it is; the new section links into it rather than repeating it. Three things worth having written down, because none of them is visible from the outside: Four of the six hold no stored credential at all. PyPI, RubyGems, crates.io and NuGet publish over trusted publishing, exchanging the run's OIDC token for a short lived key, so what has to exist is a policy naming this repository, the workflow file and the release environment. Only WinGet and Chocolatey use a stored secret, because neither has an OIDC path. WINGET_TOKEN has to be a classic personal access token. Fine grained tokens are not supported by wingetcreate. A green run does not prove anything was published. The WinGet and Chocolatey steps deliberately do not fail when their secret is absent: they build and upload the artifact, emit a warning and print how to publish by hand in the run summary. That keeps a missing secret from failing a release, but it means the summary is what to read, not the tick. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Doc-only. Follow-up to the Windows packaging series (#3901, #3893, #3895, #3896, #3898, #3897), all merged.
Six workflows publish something when a GitHub release is published —
pypi.yml,release_ruby.yml,release_rust.yml,dotnet-tool.yml,winget.yml,chocolatey.yml. Between them they need one repository variable, two repository secrets and four trusted-publishing policies on the receiving side.Every one of those was already documented, and no two of them in the same place:
CHOCO_API_KEYWINGET_TOKENNUGET_USERSo a release manager preparing their first release could only find out what needs setting up by reading the whole document, and couldn't tell "not configured yet" from a real failure.
This adds one
### Release Automation Credentialssection: what each item is, secret vs. variable, which workflow consumes it, and what happens when it's missing. The per-package prose stays where it is — the new section is the lookup and links into it rather than duplicating it.Three things worth writing down
releaseenvironment. Only WinGet and Chocolatey use a stored secret, because neither has an OIDC path.WINGET_TOKENmust be a classic PAT withpublic_repo. Fine-grained tokens are not supported bywingetcreate.::warning::and print how to publish by hand in the run summary. That keeps a missing secret from failing a release, but it means the summary is what to read, not the tick.Verified, not transcribed
Every row was checked against the merged workflows rather than written from memory:
NUGET_USERis referenced asvars.(a variable);WINGET_TOKENandCHOCO_API_KEYassecrets.environment: releaseid-token: writeexit 0after their guard, with a::warning::and a step-summary blockThe table is 7 rows × 4 columns, well-formed, and the
#chocolateyanchor resolves.JIRA: THRIFT-6327
🤖 Generated with Claude Code