Watchdog (cronjob) #338
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
# | |
# This action restarts actions that failed - 3x | |
# | |
name: Watchdog (cronjob) | |
on: | |
push: | |
schedule: | |
- cron: '*/15 * * * *' | |
workflow_dispatch: | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
concurrency: | |
group: watchdog-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
gradle: | |
strategy: | |
fail-fast: false | |
max-parallel: 8 | |
matrix: | |
# list scripts you want to watch and execute failed jobs x-times | |
script: | |
- generate-redirector-config | |
- generate-base-files-info-json | |
name: "R" | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: "Restart ${{ matrix.script }}.yml" | |
run: | | |
# Define variables here | |
OWNER_REPO="armbian/armbian.github.io" | |
ATTEMPTS="3" | |
SCRIPT="${{ matrix.script }}" | |
WORKFLOW=$(gh api "/repos/${{ github.repository }}/actions/workflows" | jq '.workflows[] | select(.path==".github/workflows/${{ matrix.script }}.yml")' | jq -r '.id') | |
read ID STATUS ATTEMPT <<< $(gh api "/repos/${{ github.repository }}/actions/workflows/${WORKFLOW}/runs" | jq '.workflow_runs[]' | jq -r '.id,.conclusion,.run_attempt' | head -3 | xargs -n3 -d'\n') | |
# if attempt is lower then 5 and status is "cancelled" or "failed", rerun failed jobs | |
if [ "${ATTEMPT}" -lt "${ATTEMPTS}" ] && ([ "$STATUS" == "failure" ] || [ "$STATUS" == "failure" ]); then | |
gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/${{ github.repository }}/actions/runs/${ID}/rerun-failed-jobs | |
fi |