Delete cleanup_version_branches.yml
This commit is contained in:
80
.github/workflows/cleanup_version_branches.yml
vendored
80
.github/workflows/cleanup_version_branches.yml
vendored
@@ -1,80 +0,0 @@
|
||||
name: Cleanup merged version branches
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 3 * * 0"
|
||||
# Runs every Sunday at 03:00 UTC; adjust if needed.
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
cleanup-version-branches:
|
||||
name: Delete merged version/* branches
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Fetch all remote branches
|
||||
run: |
|
||||
git fetch --all --prune
|
||||
|
||||
- name: Identify merged version/* branches
|
||||
id: find
|
||||
run: |
|
||||
# List remote version branches
|
||||
REMOTE_BRANCHES=$(git branch -r --list "origin/version/*" | sed 's/^ *//')
|
||||
|
||||
if [ -z "$REMOTE_BRANCHES" ]; then
|
||||
echo "No remote version/* branches found."
|
||||
echo "branches=" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Found version branches:"
|
||||
echo "$REMOTE_BRANCHES"
|
||||
|
||||
MERGED_BRANCHES=()
|
||||
|
||||
# Determine which are fully merged into origin/main
|
||||
for RB in $REMOTE_BRANCHES; do
|
||||
# Strip the 'origin/' prefix for local tracking
|
||||
LB=${RB#origin/}
|
||||
|
||||
# Check merge status against origin/main
|
||||
if git branch --remotes --merged origin/main | grep -q "$RB"; then
|
||||
# Do not touch the currently checked out branch (defensive)
|
||||
if [ "$LB" != "$GITHUB_REF_NAME" ]; then
|
||||
MERGED_BRANCHES+=("$LB")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${#MERGED_BRANCHES[@]}" -eq 0 ]; then
|
||||
echo "No merged version/* branches to delete."
|
||||
echo "branches=" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Merged version branches to delete:"
|
||||
printf '%s\n' "${MERGED_BRANCHES[@]}"
|
||||
|
||||
# Join into space-separated list for output
|
||||
echo "branches=${MERGED_BRANCHES[*]}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Delete merged version branches on origin
|
||||
if: steps.find.outputs.branches != ''
|
||||
env:
|
||||
BRANCHES: ${{ steps.find.outputs.branches }}
|
||||
run: |
|
||||
echo "Deleting merged version branches: ${BRANCHES}"
|
||||
|
||||
for BR in ${BRANCHES}; do
|
||||
echo "Deleting origin/${BR}"
|
||||
git push origin --delete "${BR}" || echo "Failed to delete ${BR} (might already be gone)"
|
||||
done
|
||||
Reference in New Issue
Block a user