@@ -36,33 +36,58 @@ jobs:
3636
3737 - name : Delete all temporary releases and tags for merged branch
3838 run : |
39- PREFIX="temp-${SAFE_BRANCH}-v"
39+ set -euo pipefail
4040
41- echo "Looking for releases with prefix: $PREFIX "
41+ PREFIX="temp-${SAFE_BRANCH}-v "
4242
43- RELEASE_TAGS="$(
44- gh release list \
45- --limit 1000 \
46- --json tagName \
47- --jq '.[] | .tagName | select(test("^'"${PREFIX}"'[0-9]+$"))'
43+ echo "Repository: ${GITHUB_REPOSITORY}"
44+ echo "Looking for temp releases with prefix: ${PREFIX}"
45+
46+ gh api \
47+ --paginate \
48+ "repos/${GITHUB_REPOSITORY}/releases" \
49+ --jq '.[] | [.id, .tag_name] | @tsv' \
50+ > releases.tsv
51+
52+ echo "All release tags currently visible:"
53+ cut -f2 releases.tsv || true
54+
55+ MATCHES="$(
56+ awk -v prefix="$PREFIX" '
57+ BEGIN { prefix_len = length(prefix) }
58+ index($2, prefix) == 1 {
59+ suffix = substr($2, prefix_len + 1)
60+ if (suffix ~ /^[0-9]+$/) {
61+ print $1 "\t" $2
62+ }
63+ }
64+ ' releases.tsv
4865 )"
4966
50- if [ -z "$RELEASE_TAGS" ]; then
51- echo "No temporary releases found for branch: $BRANCH_NAME"
67+ if [ -z "$MATCHES" ]; then
68+ echo "No matching temporary releases found for branch: ${BRANCH_NAME}"
69+ echo "Expected tags like: ${PREFIX}1, ${PREFIX}2, ${PREFIX}3"
5270 exit 0
5371 fi
5472
55- echo "Found temporary releases:"
56- echo "$RELEASE_TAGS "
73+ echo "Matching releases to delete :"
74+ echo "$MATCHES "
5775
58- echo "$RELEASE_TAGS " | while IFS= read -r TAG; do
59- if [ -z "$TAG" ]; then
76+ echo "$MATCHES " | while IFS="$(printf '\t')" read -r RELEASE_ID TAG; do
77+ if [ -z "$RELEASE_ID" ] || [ -z "$ TAG" ]; then
6078 continue
6179 fi
6280
63- echo "Deleting release and tag: $TAG"
81+ echo "Deleting release id=${RELEASE_ID}, tag=${TAG}"
82+
83+ gh api \
84+ --method DELETE \
85+ "repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}"
86+
87+ echo "Deleting git tag ref: ${TAG}"
6488
65- gh release delete "$TAG" \
66- --yes \
67- --cleanup-tag
89+ gh api \
90+ --method DELETE \
91+ "repos/${GITHUB_REPOSITORY}/git/refs/tags/${TAG}" \
92+ || echo "Tag ${TAG} was already deleted or did not exist"
6893 done
0 commit comments