Skip to content

Commit ecbd93b

Browse files
authored
feat: Add workflow to prune stale branches (#1264)
1 parent a21189d commit ecbd93b

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Prune stale branches
2+
on:
3+
workflow_dispatch:
4+
schedule:
5+
- cron: '30 1 * * *' # run every day at 01:30 UTC
6+
7+
jobs:
8+
stale-branches:
9+
runs-on: ubuntu-latest
10+
env:
11+
ORG: nginx
12+
REPO: documentation
13+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14+
permissions:
15+
contents: write
16+
steps:
17+
- name: Prune all stale branches
18+
run: |
19+
HAS_MORE="true"
20+
21+
while [ "$HAS_MORE" == "true" ]; do
22+
RESPONSE=$(curl -L -s \
23+
-X GET \
24+
-H "Accept: application/json" \
25+
-s "https://github.com/${{env.ORG}}/${{env.REPO}}/branches/stale")
26+
27+
HAS_MORE=$(echo "$RESPONSE" | jq -r '.payload.has_more')
28+
BRANCHES=$(echo "$RESPONSE" | jq -r '.payload.branches[].name')
29+
30+
for BRANCH in $BRANCHES; do
31+
echo "Deleting branch $BRANCH..."
32+
DELETE_RESPONSE=$(curl -L -s \
33+
-X DELETE \
34+
-H "Accept: application/vnd.github+json" \
35+
-H "Authorization: Bearer ${{env.GITHUB_TOKEN}}" \
36+
-H "X-GitHub-Api-Version: 2022-11-28" \
37+
https://api.github.com/repos/${{env.ORG}}/${{env.REPO}}/git/refs/heads/$BRANCH)
38+
echo "Delete response for branch $BRANCH: $DELETE_RESPONSE"
39+
done
40+
done
41+

0 commit comments

Comments
 (0)