11name : " Update Release Status"
22on :
3- check_run :
4- types :
5- - completed
6- - rerequested
7- branches :
8- - " rc/**"
9-
103 workflow_dispatch :
114 inputs :
125 head-sha :
@@ -20,40 +13,30 @@ permissions:
2013 checks : write
2114 contents : write
2215
16+ env :
17+ HEAD_SHA : ${{ inputs.head-sha }}
18+
2319jobs :
2420 validate-check-runs :
2521 runs-on : ubuntu-22.04
2622 outputs :
2723 status : ${{ steps.set-output.outputs.status }}
28- check-run-head-sha : ${{ steps.set-output.outputs.check-run-head-sha }}
2924 steps :
30- - name : Determine check run head SHA
31- env :
32- HEAD_SHA_FROM_EVENT : ${{ github.event.check_run.head_sha }}
33- HEAD_SHA_FROM_INPUTS : ${{ inputs.head-sha }}
34- run : |
35- if [[ $GITHUB_EVENT_NAME == "workflow_dispatch" ]]; then
36- echo "CHECK_RUN_HEAD_SHA=$HEAD_SHA_FROM_INPUTS" >> "$GITHUB_ENV"
37- else
38- echo "CHECK_RUN_HEAD_SHA=$HEAD_SHA_FROM_EVENT" >> "$GITHUB_ENV"
39- fi
40-
4125 - name : Checkout
4226 uses : actions/checkout@v4
4327 with :
44- ref : ${{ env.CHECK_RUN_HEAD_SHA }}
28+ ref : ${{ inputs.head-sha }}
4529
4630 - name : Get release status check run
4731 id : get-check-run
48- if : (github.event_name == 'check_run' && github.event.check_run.conclusion == 'success' && github.event.check_run.name != github.workflow) || github.event_name == 'workflow_dispatch'
4932 env :
5033 GITHUB_TOKEN : ${{ github.token }}
5134 run : |
5235 check_run_info=$(gh api \
5336 --header "Accept: application/vnd.github+json" \
5437 --header "X-GitHub-Api-Version: 2022-11-28" \
5538 --jq '.check_runs[] | select(.name == "release-status") | {id: .id, status: .status, conclusion: .conclusion}' \
56- /repos/$GITHUB_REPOSITORY/commits/$CHECK_RUN_HEAD_SHA /check-runs)
39+ /repos/$GITHUB_REPOSITORY/commits/$HEAD_SHA /check-runs)
5740
5841 check_run_id=$(echo "$check_run_info" | jq -r '.id')
5942 check_run_status=$(echo "$check_run_info" | jq -r '.status')
@@ -64,19 +47,21 @@ jobs:
6447 echo "CHECK_RUN_CONCLUSION=$check_run_conclusion" >> "$GITHUB_ENV"
6548
6649 - name : Reset release status
67- if : env.CHECK_RUN_STATUS == 'completed' && ((github.event_name == 'check_run' && github.event.action == 'rerequested') || github.event_name == 'workflow_dispatch')
50+ if : env.CHECK_RUN_STATUS == 'completed'
6851 env :
6952 GITHUB_TOKEN : ${{ github.token }}
7053 run : |
7154 CHECK_RUN_ID=$(gh api \
7255 --header "Accept: application/vnd.github+json" \
7356 --header "X-GitHub-Api-Version: 2022-11-28" \
7457 --field name="release-status" \
75- --field head_sha="$CHECK_RUN_HEAD_SHA " \
58+ --field head_sha="$HEAD_SHA " \
7659 --jq ".id" \
7760 /repos/$GITHUB_REPOSITORY/check-runs)
7861
7962 echo "Created release status check run with id $CHECK_RUN_ID"
63+ // Reset the status to in progress.
64+ echo "CHECK_RUN_STATUS=in_progress" >> "$GITHUB_ENV"
8065
8166 - name : Check all runs completed
8267 if : env.CHECK_RUN_STATUS != 'completed'
8772 --header "Accept: application/vnd.github+json" \
8873 --header "X-GitHub-Api-Version: 2022-11-28" \
8974 --jq '.check_runs | map(select(.name != "release-status"))' \
90- /repos/$GITHUB_REPOSITORY/commits/$CHECK_RUN_HEAD_SHA /check-runs)
75+ /repos/$GITHUB_REPOSITORY/commits/$HEAD_SHA /check-runs)
9176
9277 status_stats=$(echo "$check_runs" | jq -r '. | {failed: (map(select(.conclusion == "failure")) | length), pending: (map(select(.status != "completed")) | length) }')
9378
@@ -132,13 +117,11 @@ jobs:
132117 echo "status=in_progress" >> "$GITHUB_OUTPUT"
133118 fi
134119
135- echo "check-run-head-sha=$CHECK_RUN_HEAD_SHA" >> "$GITHUB_OUTPUT"
136-
137120 update-release :
138121 needs : validate-check-runs
139122 if : needs.validate-check-runs.outputs.status == 'completed'
140123 uses : ./.github/workflows/update-release.yml
141124 with :
142- head-sha : ${{ needs.validate-check-runs.outputs.check-run- head-sha }}
125+ head-sha : ${{ inputs. head-sha }}
143126 secrets :
144127 AUTOMATION_PRIVATE_KEY : ${{ secrets.AUTOMATION_PRIVATE_KEY }}
0 commit comments