Skip to content

Commit 60c48e6

Browse files
authored
Merge branch 'main' into rvermeulen/add-webhook-handler
2 parents d2b668b + 198b244 commit 60c48e6

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

.github/workflows/update-release-status.yml

+22-30
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
name: "Update Release Status"
22
on:
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,36 @@ permissions:
2013
checks: write
2114
contents: write
2215

16+
env:
17+
HEAD_SHA: ${{ inputs.head-sha }}
18+
2319
jobs:
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 }}
24+
conclusion: ${{ steps.set-output.outputs.conclusion }}
2925
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-
4126
- name: Checkout
4227
uses: actions/checkout@v4
4328
with:
44-
ref: ${{ env.CHECK_RUN_HEAD_SHA }}
29+
ref: ${{ inputs.head-sha }}
4530

4631
- name: Get release status check run
4732
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'
4933
env:
5034
GITHUB_TOKEN: ${{ github.token }}
5135
run: |
5236
check_run_info=$(gh api \
5337
--header "Accept: application/vnd.github+json" \
5438
--header "X-GitHub-Api-Version: 2022-11-28" \
5539
--jq '.check_runs[] | select(.name == "release-status") | {id: .id, status: .status, conclusion: .conclusion}' \
56-
/repos/$GITHUB_REPOSITORY/commits/$CHECK_RUN_HEAD_SHA/check-runs)
40+
/repos/$GITHUB_REPOSITORY/commits/$HEAD_SHA/check-runs)
41+
42+
if [[ -z "$check_run_info" ]]; then
43+
echo "No release status check run found"
44+
exit 1
45+
fi
5746
5847
check_run_id=$(echo "$check_run_info" | jq -r '.id')
5948
check_run_status=$(echo "$check_run_info" | jq -r '.status')
@@ -64,19 +53,21 @@ jobs:
6453
echo "CHECK_RUN_CONCLUSION=$check_run_conclusion" >> "$GITHUB_ENV"
6554
6655
- 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')
56+
if: env.CHECK_RUN_STATUS == 'completed'
6857
env:
6958
GITHUB_TOKEN: ${{ github.token }}
7059
run: |
7160
CHECK_RUN_ID=$(gh api \
7261
--header "Accept: application/vnd.github+json" \
7362
--header "X-GitHub-Api-Version: 2022-11-28" \
7463
--field name="release-status" \
75-
--field head_sha="$CHECK_RUN_HEAD_SHA" \
64+
--field head_sha="$HEAD_SHA" \
7665
--jq ".id" \
7766
/repos/$GITHUB_REPOSITORY/check-runs)
7867
7968
echo "Created release status check run with id $CHECK_RUN_ID"
69+
# Reset the status to in progress.
70+
echo "CHECK_RUN_STATUS=in_progress" >> "$GITHUB_ENV"
8071
8172
- name: Check all runs completed
8273
if: env.CHECK_RUN_STATUS != 'completed'
@@ -87,10 +78,12 @@ jobs:
8778
--header "Accept: application/vnd.github+json" \
8879
--header "X-GitHub-Api-Version: 2022-11-28" \
8980
--jq '.check_runs | map(select(.name != "release-status"))' \
90-
/repos/$GITHUB_REPOSITORY/commits/$CHECK_RUN_HEAD_SHA/check-runs)
81+
/repos/$GITHUB_REPOSITORY/commits/$HEAD_SHA/check-runs)
9182
9283
status_stats=$(echo "$check_runs" | jq -r '. | {failed: (map(select(.conclusion == "failure")) | length), pending: (map(select(.status != "completed")) | length) }')
9384
85+
echo "status_stats=$status_stats"
86+
9487
failed=$(echo "$status_stats" | jq -r '.failed')
9588
pending=$(echo "$status_stats" | jq -r '.pending')
9689
@@ -101,7 +94,6 @@ jobs:
10194
if: env.CHECK_RUNS_PENDING == '0' && env.CHECK_RUN_STATUS != 'completed'
10295
env:
10396
GITHUB_TOKEN: ${{ github.token }}
104-
CHECK_RUNS_FAILED: ${{ env.check-runs-failed }}
10597
run: |
10698
if [[ "$CHECK_RUNS_FAILED" == "0" ]]; then
10799
echo "All check runs succeeded"
@@ -123,6 +115,8 @@ jobs:
123115
--input - \
124116
/repos/$GITHUB_REPOSITORY/check-runs/$CHECK_RUN_ID
125117
118+
echo "conclusion=$conclusion" >> "$GITHUB_OUTPUT"
119+
126120
- name: Set output
127121
id: set-output
128122
run: |
@@ -132,13 +126,11 @@ jobs:
132126
echo "status=in_progress" >> "$GITHUB_OUTPUT"
133127
fi
134128
135-
echo "check-run-head-sha=$CHECK_RUN_HEAD_SHA" >> "$GITHUB_OUTPUT"
136-
137129
update-release:
138130
needs: validate-check-runs
139-
if: needs.validate-check-runs.outputs.status == 'completed'
131+
if: needs.validate-check-runs.outputs.status == 'completed' && needs.validate-check-runs.outputs.conclusion == 'success'
140132
uses: ./.github/workflows/update-release.yml
141133
with:
142-
head-sha: ${{ needs.validate-check-runs.outputs.check-run-head-sha }}
134+
head-sha: ${{ inputs.head-sha }}
143135
secrets:
144136
AUTOMATION_PRIVATE_KEY: ${{ secrets.AUTOMATION_PRIVATE_KEY }}

0 commit comments

Comments
 (0)