forked from zen-browser/desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathremove-failed-jobs.sh
45 lines (36 loc) · 1.18 KB
/
remove-failed-jobs.sh
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
#!/bin/bash
gh_bulk_delete_workflow_runs() {
local repo=$1
# Ensure the repo argument is provided
if [[ -z "$repo" ]]; then
echo "Usage: gh_bulk_delete_workflow_runs <owner/repo>"
return 1
fi
# Fetch workflow runs that are cancelled, failed, or timed out
local runs
runs=$(gh api repos/$repo/actions/runs --paginate \
| jq -r '.workflow_runs[] |
select(.conclusion == "cancelled" or
.conclusion == "failure" or
.conclusion == "timed_out") |
.id')
if [[ -z "$runs" ]]; then
echo "No workflow runs found for $repo with the specified conclusions."
return 0
fi
# Loop through each run and delete it
while IFS= read -r run; do
echo "Attempting to delete run: https://github.com/$repo/actions/runs/$run"
# Perform the deletion
if gh api -X DELETE repos/$repo/actions/runs/$run --silent; then
echo "Successfully deleted run: $run"
else
echo "Error deleting run: $run" >&2
fi
# Optional delay to avoid hitting API rate limits
sleep 1
done <<< "$runs"
echo "Completed deletion process for workflow runs in $repo."
}
# Execute the function with the provided argument
gh_bulk_delete_workflow_runs "$1"