Expand branch cleanup to include closed PR branches

The workflow now deletes branches from both merged and closed pull requests older than 7 days, not just merged ones. This helps keep the repository cleaner by removing stale branches associated with closed PRs as well.
This commit is contained in:
CanbiZ (MickLesk) 2026-01-20 08:34:36 +01:00
parent 3925765f85
commit fbd38968c9

View File

@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Delete merged branches older than 7 days - name: Delete merged or closed branches older than 7 days
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -25,12 +25,12 @@ jobs:
echo "Cutoff timestamp: $CUTOFF_DATE" echo "Cutoff timestamp: $CUTOFF_DATE"
gh pr list \ gh pr list \
--state merged \ --state all \
--base main \ --base main \
--json number,mergedAt,headRefName \ --json number,state,mergedAt,closedAt,headRefName \
--limit 500 | --limit 500 |
jq -r '.[] | "\(.mergedAt) \(.headRefName)"' | jq -r '.[] | select(.state == "MERGED" or .state == "CLOSED") | "\(.state) \(.mergedAt // .closedAt) \(.headRefName)"' |
while read -r mergedAt branch; do while read -r state closedOrMergedAt branch; do
# Schutz # Schutz
case "$branch" in case "$branch" in
main|master|develop) main|master|develop)
@ -39,15 +39,15 @@ jobs:
;; ;;
esac esac
MERGED_TS=$(date -d "$mergedAt" +%s) CLOSED_OR_MERGED_TS=$(date -d "$closedOrMergedAt" +%s)
if [ "$MERGED_TS" -lt "$CUTOFF_DATE" ]; then if [ "$CLOSED_OR_MERGED_TS" -lt "$CUTOFF_DATE" ]; then
echo "Deleting branch: $branch (merged at $mergedAt)" echo "Deleting branch: $branch ($state at $closedOrMergedAt)"
gh api \ gh api \
-X DELETE \ -X DELETE \
repos/${{ github.repository }}/git/refs/heads/$branch \ repos/${{ github.repository }}/git/refs/heads/$branch \
|| echo "Branch $branch already deleted" || echo "Branch $branch already deleted"
else else
echo "Keeping branch: $branch (recent merge)" echo "Keeping branch: $branch (recent $state)"
fi fi
done done