Skip to content

Commit df12109

Browse files
uipreligaclaude
andcommitted
ci: push release bump+tag with GITHUB_TOKEN instead of a GitHub App
The release job failed at "Mint release app token" because RELEASE_APP_ID / RELEASE_APP_PRIVATE_KEY are not set on this repo. The App existed only to bypass main's branch protection when pushing the version bump + tag -- but main has no branch protection, so the App is unnecessary. Push directly with the built-in GITHUB_TOKEN (contents: write). This unblocks the release, which then publishes to public PyPI (the existing pending publisher: workflow release.yml, environment pypi) and the Azure feed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 6d8c025 commit df12109

1 file changed

Lines changed: 8 additions & 16 deletions

File tree

.github/workflows/release.yml

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ concurrency:
3030
group: release-${{ github.ref }}
3131
cancel-in-progress: false
3232

33-
# The version-bump commit + tag are pushed with a GitHub App installation
34-
# token (not GITHUB_TOKEN): main's branch protection blocks direct pushes,
35-
# and only the release app has a ruleset bypass. GITHUB_TOKEN is only used
36-
# for the checkout's read access.
33+
# `main` has no branch protection, so the version-bump commit + tag are
34+
# pushed directly with the built-in GITHUB_TOKEN (contents: write) -- no
35+
# GitHub App / ruleset bypass is required. If branch protection is added
36+
# later, either add a GITHUB_TOKEN bypass or restore an app-token step.
3737
permissions:
38-
contents: read
38+
contents: write # push the version-bump commit + tag to main
3939
packages: write # push the versioned agent image to ghcr.io on release
4040

4141
jobs:
@@ -58,20 +58,12 @@ jobs:
5858
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: "openai-codex-cli-bin,openai-codex"
5959

6060
steps:
61-
- name: Mint release app token
62-
id: app-token
63-
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
64-
with:
65-
app-id: ${{ secrets.RELEASE_APP_ID }}
66-
private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
67-
6861
- name: Checkout code
6962
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
7063
with:
7164
fetch-depth: 0 # semantic-release needs full history for tags + changelog
72-
# Persisted in .git config so semantic-release's push to main is
73-
# authenticated as the app (which bypasses branch protection).
74-
token: ${{ steps.app-token.outputs.token }}
65+
# Default GITHUB_TOKEN is persisted in .git config so the bump
66+
# commit + tag push to (unprotected) main is authenticated.
7567

7668
- name: Set up Python 3.13
7769
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
@@ -89,7 +81,7 @@ jobs:
8981
- name: Run semantic-release (bump + tag, no push yet)
9082
id: release
9183
env:
92-
GH_TOKEN: ${{ steps.app-token.outputs.token }}
84+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9385
# Passed via env (not interpolated into the script) per GitHub's
9486
# injection guidance; it's a constrained choice input regardless.
9587
BUMP: ${{ inputs.bump }}

0 commit comments

Comments
 (0)