Skip to content

Commit 1c7486b

Browse files
committed
Add script for automatic release pruning
1 parent d62e610 commit 1c7486b

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,7 @@ jobs:
114114
hub release create $(for a in artifacts/*; do echo -a $a; done) -m "$NAME" -t "master" "$TAGNAME"
115115
env:
116116
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
117+
- name: Prune old releases
118+
run: ./utils/prunetags.sh
119+
env:
120+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

util/prunetags.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
set -e
3+
git fetch --tags
4+
TAGS=( $(git tag -l "autobuild-*" | sort -r) )
5+
6+
KEEP_LATEST=14
7+
KEEP_MONTHLY=12
8+
9+
LATEST_TAGS=()
10+
MONTHLY_TAGS=()
11+
12+
CUR_MONTH="-1"
13+
14+
for TAG in ${TAGS[@]}; do
15+
if [[ ${#LATEST_TAGS[@]} -lt ${KEEP_LATEST} ]]; then
16+
LATEST_TAGS+=( "$TAG" )
17+
fi
18+
19+
if [[ ${#MONTHLY_TAGS[@]} -lt ${KEEP_MONTHLY} ]]; then
20+
TAG_MONTH="$(echo $TAG | cut -d- -f3)"
21+
22+
if [[ ${TAG_MONTH} != ${CUR_MONTH} ]]; then
23+
CUR_MONTH="${TAG_MONTH}"
24+
MONTHLY_TAGS+=( "$TAG" )
25+
fi
26+
fi
27+
done
28+
29+
for TAG in ${LATEST_TAGS[@]} ${MONTHLY_TAGS[@]}; do
30+
TAGS=( "${TAGS[@]/$TAG}" )
31+
done
32+
33+
for TAG in ${TAGS[@]}; do
34+
echo "Deleting ${TAG}"
35+
hub release delete "${TAG}"
36+
git tag -d "${TAG}"
37+
done
38+
39+
git push --tags --prune

0 commit comments

Comments
 (0)