#!/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"