status #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: status | |
on: | |
workflow_run: | |
workflows: [test] | |
types: [completed] | |
jobs: | |
status: | |
runs-on: ubuntu-20.04 | |
steps: | |
# custom statuses? | |
- uses: dawidd6/action-download-artifact@v2 | |
continue-on-error: true | |
with: | |
workflow: ${{github.event.workflow_run.name}} | |
run_id: ${{github.event.workflow_run.id}} | |
name: status | |
path: status | |
- name: update-status | |
continue-on-error: true | |
run: | | |
ls status | |
for s in $(shopt -s nullglob ; echo status/*.json) | |
do | |
# parse requested status | |
export STATE="$(jq -er '.state' $s)" | |
export CONTEXT="$(jq -er '.context' $s)" | |
export DESCRIPTION="$(jq -er '.description' $s)" | |
# help lookup URL for job/steps because GitHub makes | |
# it VERY HARD to link to specific jobs | |
export TARGET_URL="$( | |
jq -er '.target_url // empty' $s || ( | |
export TARGET_JOB="$(jq -er '.target_job' $s)" | |
export TARGET_STEP="$(jq -er '.target_step // ""' $s)" | |
curl -sS -H "authorization: token ${{secrets.BOT_TOKEN}}" \ | |
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/runs/` | |
`${{github.event.workflow_run.id}}/jobs" \ | |
| jq -er '.jobs[] | |
| select(.name == env.TARGET_JOB) | |
| .html_url | |
+ "?check_suite_focus=true" | |
+ ((.steps[] | |
| select(.name == env.TARGET_STEP) | |
| "#step:\(.number):0") // "")'))" | |
# update status | |
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \ | |
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/statuses/` | |
`${{github.event.workflow_run.head_sha}}" \ | |
-d "$(jq -n '{ | |
state: env.STATE, | |
context: env.CONTEXT, | |
description: env.DESCRIPTION, | |
target_url: env.TARGET_URL}' \ | |
| tee /dev/stderr)" | |
done |