@@ -101,9 +101,31 @@ jobs:
101101
102102 if [ -n "$PR_NUMBER" ]; then
103103 echo "Updating existing PR #$PR_NUMBER"
104- gh pr edit "$PR_NUMBER" \
105- --title "$PR_TITLE" \
106- --body-file "$BODY_FILE"
104+ set +e
105+ EDIT_OUTPUT="$(
106+ gh pr edit "$PR_NUMBER" \
107+ --title "$PR_TITLE" \
108+ --body-file "$BODY_FILE" 2>&1
109+ )"
110+ EDIT_EXIT=$?
111+ set -e
112+
113+ if [ "$EDIT_EXIT" -eq 0 ]; then
114+ echo "$EDIT_OUTPUT"
115+ exit 0
116+ fi
117+
118+ if echo "$EDIT_OUTPUT" | grep -q "Resource not accessible by personal access token"; then
119+ echo "::warning::RELEASE_PR_TOKEN could not edit PR. Falling back to GITHUB_TOKEN."
120+ export GH_TOKEN="$DEFAULT_GH_TOKEN"
121+ gh pr edit "$PR_NUMBER" \
122+ --title "$PR_TITLE" \
123+ --body-file "$BODY_FILE"
124+ exit 0
125+ fi
126+
127+ echo "$EDIT_OUTPUT"
128+ exit "$EDIT_EXIT"
107129 else
108130 echo "Creating new release PR"
109131 set +e
@@ -133,6 +155,35 @@ jobs:
133155 exit 0
134156 fi
135157
158+ if echo "$CREATE_OUTPUT" | grep -q "Resource not accessible by personal access token"; then
159+ echo "::warning::RELEASE_PR_TOKEN could not create PR. Falling back to GITHUB_TOKEN."
160+ export GH_TOKEN="$DEFAULT_GH_TOKEN"
161+ set +e
162+ CREATE_OUTPUT_FALLBACK="$(
163+ gh pr create \
164+ --base main \
165+ --head develop \
166+ --title "$PR_TITLE" \
167+ --body-file "$BODY_FILE" 2>&1
168+ )"
169+ CREATE_EXIT_FALLBACK=$?
170+ set -e
171+
172+ if [ "$CREATE_EXIT_FALLBACK" -eq 0 ]; then
173+ echo "$CREATE_OUTPUT_FALLBACK"
174+ exit 0
175+ fi
176+
177+ if echo "$CREATE_OUTPUT_FALLBACK" | grep -q "Resource not accessible by integration"; then
178+ echo "::warning::Unable to create release PR with fallback GITHUB_TOKEN."
179+ echo "$CREATE_OUTPUT_FALLBACK"
180+ exit 0
181+ fi
182+
183+ echo "$CREATE_OUTPUT_FALLBACK"
184+ exit "$CREATE_EXIT_FALLBACK"
185+ fi
186+
136187 echo "$CREATE_OUTPUT"
137188 exit "$CREATE_EXIT"
138189 fi
0 commit comments