@@ -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