elemental-operator/.github/actions/wait-commit-status/action.yaml

41 lines
1.1 KiB
YAML

name: Wait for commit status
inputs:
repository:
required: true
commit:
required: true
context:
required: true
status:
required: true
interval:
required: false
default: 30
retries:
required: false
default: 5
runs:
using: composite
steps:
- name: Wait for commit status ${{ inputs.context }}
shell: bash
env:
REPO: ${{ inputs.repository }}
COMMIT: ${{ inputs.commit }}
CONTEXT: ${{ inputs.context }}
STATUS: ${{ inputs.status }}
SLEEP: ${{ inputs.interval }}
RETRIES: ${{ inputs.retries }}
run: |
QUERY_URL=https://api.github.com/repos/${REPO}/statuses/${COMMIT}
JQ_SELECTOR="select((.context==\"${CONTEXT}\") and (.state==\"${STATUS}\"))"
for i in $(seq ${RETRIES}); do
RESULT=$(curl -s "${QUERY_URL}" | jq "[.[] | ${JQ_SELECTOR}][0]")
[ "${RESULT}" != "null" ] && break
[ "${i}" != "${RETRIES}" ] && echo "Waiting for ${STATUS} (current: ${RESULT})" && sleep ${SLEEP}
done
[ "${RESULT}" != "null" ] || exit 1