btrfs-progs/ci/actions/keep-last-week

46 lines
1.1 KiB
Bash
Executable File

#!/bin/sh -e
#
# Keep only last week worth of CI runs, selected workflows
type -p gh > /dev/null || { echo "ERROR: gh tool not found"; exit 1; }
type -p jq > /dev/null || { echo "ERROR: jq tool not found"; exit 1; }
repo="kdave/btrfs-progs"
daysmax=8
clean_workflow() {
local wf="$1"
local json=$(gh run -R "$repo" list --limit 100 --workflow "$wf" --json databaseId,startedAt)
echo "Cleaning workflow $wf"
i=0
while :; do
id=$(echo "$json" | jq -r ".[$i].databaseId")
if [ "$id" == "null" -o -z "$id" ]; then
break
fi
echo "ID: $id"
now=$(date +%s)
date=$(echo "$json" | jq -r ".[$i].startedAt")
ts=$(date --date=${date} +%s)
delta=$(($now-$ts))
days=$(($delta/3600/24))
echo "Started at $id, delta $delta, days $days"
if [ "$days" -ge "$daysmax" ]; then
echo "Delete run $id"
gh run -R "$repo" delete "$id"
fi
# loop
i=$(($i+1))
done
}
clean_workflow "Testing CI build"
clean_workflow "Devel build and tests"
clean_workflow "Pull request build and tests"
clean_workflow "Codespell"
clean_workflow "CI image tests"
clean_workflow "Sanitizer checks"