Skip to content

Commit 6bcaebe

Browse files
committed
ci: retry release publish with GITHUB_TOKEN after app-token failure
1 parent 98dd1de commit 6bcaebe

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

.github/workflows/release.yml

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -225,20 +225,26 @@ jobs:
225225
GH_APP_TOKEN: ${{ steps.app_token.outputs.token }}
226226
GH_WORKFLOW_TOKEN: ${{ github.token }}
227227
run: |
228-
SELECTED_TOKEN="${GH_APP_TOKEN}"
229-
TOKEN_SOURCE="GitHub App"
230-
if [ -z "${SELECTED_TOKEN}" ]; then
231-
SELECTED_TOKEN="${GH_WORKFLOW_TOKEN}"
232-
TOKEN_SOURCE="Workflow GITHUB_TOKEN"
228+
publish_with_token() {
229+
local token="$1"
230+
GH_TOKEN="${token}" gh release view "${RELEASE_TAG}" --repo "${GH_REPO}" >/dev/null 2>&1 || \
231+
GH_TOKEN="${token}" gh release create "${RELEASE_TAG}" --repo "${GH_REPO}" --title "${RELEASE_TAG}" --generate-notes
232+
GH_TOKEN="${token}" gh release upload "${RELEASE_TAG}" dist/* --repo "${GH_REPO}" --clobber
233+
}
234+
235+
# Prefer GitHub App token, but always fallback to workflow GITHUB_TOKEN if publish fails.
236+
if [ -n "${GH_APP_TOKEN}" ]; then
237+
echo "Publishing release using: GitHub App"
238+
if publish_with_token "${GH_APP_TOKEN}"; then
239+
exit 0
240+
fi
241+
echo "GitHub App token failed to publish release. Retrying with workflow GITHUB_TOKEN..."
233242
fi
234243
235-
# If App token exists but has insufficient permissions (403), fallback to GITHUB_TOKEN.
236-
if ! GH_TOKEN="${SELECTED_TOKEN}" gh api "repos/${GH_REPO}/releases?per_page=1" >/dev/null 2>&1; then
237-
SELECTED_TOKEN="${GH_WORKFLOW_TOKEN}"
238-
TOKEN_SOURCE="Workflow GITHUB_TOKEN (fallback)"
244+
if [ -z "${GH_WORKFLOW_TOKEN}" ]; then
245+
echo "Workflow GITHUB_TOKEN is empty. Cannot publish release."
246+
exit 1
239247
fi
240248
241-
echo "Publishing release using: ${TOKEN_SOURCE}"
242-
GH_TOKEN="${SELECTED_TOKEN}" gh release view "${RELEASE_TAG}" --repo "${GH_REPO}" >/dev/null 2>&1 || \
243-
GH_TOKEN="${SELECTED_TOKEN}" gh release create "${RELEASE_TAG}" --repo "${GH_REPO}" --title "${RELEASE_TAG}" --generate-notes
244-
GH_TOKEN="${SELECTED_TOKEN}" gh release upload "${RELEASE_TAG}" dist/* --repo "${GH_REPO}" --clobber
249+
echo "Publishing release using: Workflow GITHUB_TOKEN"
250+
publish_with_token "${GH_WORKFLOW_TOKEN}"

0 commit comments

Comments
 (0)