-
-
Notifications
You must be signed in to change notification settings - Fork 0
47 lines (37 loc) · 1.53 KB
/
watchdog.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# This action recreate action for building stable images
#
name: Watchdog (cronjob)
on:
push:
schedule:
- cron: '*/15 * * * *'
workflow_dispatch:
env:
GH_TOKEN: ${{ secrets.ACCESS_TOKEN_ARMBIANWORKER }}
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: rerun
runs-on: ubuntu-latest
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/${OWNER_REPO}/actions/workflows" | jq '.workflows[] | select(.path==".github/workflows/'${{ matrix.script }}'.yml")' | jq -r '.id')
read ID STATUS ATTEMPT <<< $(gh api "/repos/${OWNER_REPO}/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/${OWNER_REPO}/actions/runs/${ID}/rerun-failed-jobs
fi