Skip to content

Commit a263282

Browse files
committed
Add a job summary.
1 parent 91b6c0c commit a263282

File tree

1 file changed

+63
-2
lines changed

1 file changed

+63
-2
lines changed

.github/workflows/backport.yml

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ on:
2424
type: string
2525
default: ''
2626
repo-source:
27-
description: 'Repository to stage changes from.'
27+
description: 'Repository to merge changes from.'
2828
required: false
2929
type: choice
3030
default: 'upstream'
@@ -166,6 +166,7 @@ jobs:
166166
fi
167167
168168
- name: Merge PRs
169+
id: merge-prs
169170
if: ${{ inputs['commit-sha'] == '' && inputs.pr_numbers != '' }}
170171
env:
171172
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -182,6 +183,8 @@ jobs:
182183
IFS=',' read -ra PR_LIST <<< "${INPUTS_PR_NUMBERS}"
183184
184185
UPSTREAM_URL="https://github.com/${STEPS_UPSTREAM_OUTPUTS_REPO}.git"
186+
RESULTS=""
187+
FAILED=false
185188
186189
for PR_NUMBER in "${PR_LIST[@]}"; do
187190
PR_NUMBER=$(echo "$PR_NUMBER" | tr -d ' ')
@@ -190,6 +193,7 @@ jobs:
190193
PR_TITLE=$(echo "$PR_DATA" | jq -r '.title')
191194
MERGE_COMMIT=$(echo "$PR_DATA" | jq -r '.mergeCommit.oid')
192195
196+
set +e
193197
if [ -n "$MERGE_COMMIT" ] && [ "$MERGE_COMMIT" != "null" ]; then
194198
# PR is merged: cherry-pick its merge commit.
195199
# Determine if it is a merge commit or squash commit.
@@ -214,16 +218,33 @@ jobs:
214218
MERGE_BASE=$(git merge-base "$PR_HEAD_SHA" "$BASE_SHA")
215219
git diff "$MERGE_BASE" "$PR_HEAD_SHA" | git apply --index
216220
fi
221+
APPLY_EXIT=$?
222+
set -e
217223
218-
git commit -m "$PR_TITLE"
224+
if [ $APPLY_EXIT -eq 0 ]; then
225+
git commit -m "$PR_TITLE"
226+
RESULTS="${RESULTS}${PR_NUMBER}=✅ "
227+
else
228+
git cherry-pick --abort 2>/dev/null || git reset --hard HEAD
229+
RESULTS="${RESULTS}${PR_NUMBER}=❌ "
230+
FAILED=true
231+
break
232+
fi
219233
done
220234
235+
echo "results=${RESULTS}" >> "$GITHUB_OUTPUT"
236+
237+
if [ "$FAILED" = "true" ]; then
238+
exit 1
239+
fi
240+
221241
- name: Push backport branch
222242
env:
223243
STEPS_BACKPORT_BRANCH_OUTPUTS_NAME: ${{ steps.backport-branch.outputs.name }}
224244
run: git push -u origin "${STEPS_BACKPORT_BRANCH_OUTPUTS_NAME}"
225245

226246
- name: Create pull request
247+
id: create-pr
227248
env:
228249
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
229250
STEPS_UPSTREAM_OUTPUTS_REPO: ${{ steps.upstream.outputs.repo }}
@@ -291,3 +312,43 @@ jobs:
291312
else
292313
echo "::notice::The 'Auto-backport' label does not exist on ${PR_REPO}. Consider adding it so that backport pull requests can be identified easily."
293314
fi
315+
316+
echo "url=${PR_URL}" >> "$GITHUB_OUTPUT"
317+
318+
- name: Write job summary
319+
if: always()
320+
env:
321+
MATRIX_BRANCH: ${{ matrix.branch }}
322+
INPUTS_COMMIT_SHA: ${{ inputs.commit-sha }}
323+
INPUTS_PR_NUMBERS: ${{ inputs.pr_numbers }}
324+
STEPS_MERGE_PRS_OUTPUTS_RESULTS: ${{ steps.merge-prs.outputs.results }}
325+
STEPS_CREATE_PR_OUTPUTS_URL: ${{ steps.create-pr.outputs.url }}
326+
run: |
327+
PR_DISPLAY="${STEPS_CREATE_PR_OUTPUTS_URL:-N/A}"
328+
329+
if [ -n "${INPUTS_PR_NUMBERS}" ] && [ -z "${INPUTS_COMMIT_SHA}" ]; then
330+
IFS=',' read -ra PR_LIST <<< "${INPUTS_PR_NUMBERS}"
331+
332+
HEADER="| Branch |"
333+
SEPARATOR="| :--- |"
334+
for PR_NUM in "${PR_LIST[@]}"; do
335+
PR_NUM=$(echo "$PR_NUM" | tr -d ' ')
336+
HEADER="${HEADER} #${PR_NUM} |"
337+
SEPARATOR="${SEPARATOR} :---: |"
338+
done
339+
HEADER="${HEADER} Pull Request |"
340+
SEPARATOR="${SEPARATOR} :--- |"
341+
342+
ROW="| \`${MATRIX_BRANCH}\` |"
343+
for PR_NUM in "${PR_LIST[@]}"; do
344+
PR_NUM=$(echo "$PR_NUM" | tr -d ' ')
345+
STATUS=$(echo "${STEPS_MERGE_PRS_OUTPUTS_RESULTS}" | tr ' ' '\n' | grep "^${PR_NUM}=" | cut -d= -f2)
346+
ROW="${ROW} ${STATUS:-❌} |"
347+
done
348+
ROW="${ROW} ${PR_DISPLAY} |"
349+
350+
printf '%s\n%s\n%s\n' "$HEADER" "$SEPARATOR" "$ROW" >> "$GITHUB_STEP_SUMMARY"
351+
else
352+
printf '| Branch | Pull Request |\n| :--- | :--- |\n| `%s` | %s |\n' \
353+
"${MATRIX_BRANCH}" "${PR_DISPLAY}" >> "$GITHUB_STEP_SUMMARY"
354+
fi

0 commit comments

Comments
 (0)