@@ -15,7 +15,7 @@ permissions:
1515
1616jobs :
1717 cleanup-github-releases :
18- name : 🧹 Cleanup Old Managed Releases & Tags (2026* )
18+ name : 🧹 Cleanup Old Managed Releases & Tags (managed prefixes )
1919 runs-on : ubuntu-latest
2020 timeout-minutes : 25
2121
@@ -34,79 +34,62 @@ jobs:
3434 READMEs-Files-Package
3535 SysAdmin-Tools
3636
37- # Matches your requested "2026xxyyzzwwkk" style (2026 + extra digits).
38- # Also covers your current pattern: 2026MMDD (8 digits) + optional "-<sha>"
39- # Examples matched:
40- # SysAdmin-Tools-20260206-6b43527
41- # SysAdmin-Tools-20260206010203-6b43527
42- MANAGED_2026_VERSION_REGEX : ' ^2026[0-9]{4,10}(-[0-9a-f]{7})?$'
43-
4437 steps :
45- - name : 🧰 Install Dependencies (gh)
46- shell : bash
47- run : |
48- set -euo pipefail
49- sudo apt-get update
50- sudo apt-get install -y gh
51-
5238 - name : 🔐 Verify GitHub CLI Auth
5339 shell : bash
5440 run : |
5541 set -euo pipefail
5642 gh auth status
5743
58- - name : 🗑️ Delete ALL matching Releases (tag prefix + 2026 version )
44+ - name : 🗑️ Delete ALL matching Releases (tag_name starts with managed prefix )
5945 shell : bash
6046 run : |
6147 set -euo pipefail
6248
63- owner="${GITHUB_REPOSITORY%/*}"
64- repo="${GITHUB_REPOSITORY#*/}"
49+ repo="${GITHUB_REPOSITORY}"
50+ owner="${repo%/*}"
51+ name="${repo#*/}"
6552
66- echo "Repository: ${owner}/${ repo}"
53+ echo "Repository: ${repo}"
6754 echo "Managed prefixes:"
6855 for p in ${MANAGED_TAG_PREFIXES}; do
6956 echo " - $p"
7057 done
71- echo "Version regex: ${MANAGED_2026_VERSION_REGEX}"
7258
7359 deleted=0
7460
75- # Stream tag_name for ALL releases (paginated)
61+ # Stream tag_name for ALL releases (paginated; no fixed limit )
7662 mapfile -t release_tags < <(
77- gh api --paginate "repos/${owner}/${repo }/releases?per_page=100" --jq '.[].tag_name'
63+ gh api --repo "$repo" -- paginate "repos/${owner}/${name }/releases?per_page=100" --jq '.[].tag_name'
7864 )
7965
8066 if [[ "${#release_tags[@]}" -eq 0 ]]; then
8167 echo "No releases found."
82- else
83- for tag in "${release_tags[@]}"; do
84- for prefix in ${MANAGED_TAG_PREFIXES}; do
85- # Expected tag formats:
86- # <prefix>-<version>
87- # where <version> begins with 2026...
88- if [[ "$tag" == "${prefix}-"* ]]; then
89- ver="${tag#${prefix}-}"
90- if [[ "$ver" =~ ${MANAGED_2026_VERSION_REGEX} ]]; then
91- echo "Deleting release: ${tag}"
92- gh release delete "${tag}" -y || true
93- deleted=$((deleted + 1))
94- fi
95- break
96- fi
97- done
98- done
68+ exit 0
9969 fi
10070
71+ for tag in "${release_tags[@]}"; do
72+ for prefix in ${MANAGED_TAG_PREFIXES}; do
73+ # Delete ANY release whose tag_name begins with "<prefix>-"
74+ if [[ "$tag" == "${prefix}-"* ]]; then
75+ echo "Deleting release: ${tag}"
76+ gh release delete "${tag}" --yes --repo "$repo" || true
77+ deleted=$((deleted + 1))
78+ break
79+ fi
80+ done
81+ done
82+
10183 echo "Deleted releases: ${deleted}"
10284
103- - name : 🗑️ Delete ALL matching Tags (tag prefix + 2026 version )
85+ - name : 🗑️ Delete ALL matching Tags (name starts with managed prefix )
10486 shell : bash
10587 run : |
10688 set -euo pipefail
10789
108- owner="${GITHUB_REPOSITORY%/*}"
109- repo="${GITHUB_REPOSITORY#*/}"
90+ repo="${GITHUB_REPOSITORY}"
91+ owner="${repo%/*}"
92+ name="${repo#*/}"
11093
11194 deleted=0
11295
@@ -115,19 +98,16 @@ jobs:
11598 echo "Scanning tags for prefix: ${prefix}-"
11699
117100 mapfile -t refs < <(
118- gh api --paginate "repos/${owner}/${repo }/git/matching-refs/tags/${prefix}-" --jq '.[].ref'
101+ gh api --repo "$repo" -- paginate "repos/${owner}/${name }/git/matching-refs/tags/${prefix}-" --jq '.[].ref'
119102 )
120103
121104 for ref in "${refs[@]}"; do
122105 # ref like: refs/tags/<tagname>
123106 tag="${ref#refs/tags/}"
124- ver="${tag#${prefix}-}"
125107
126- if [[ "$ver" =~ ${MANAGED_2026_VERSION_REGEX} ]]; then
127- echo "Deleting tag ref: ${ref}"
128- gh api -X DELETE "repos/${owner}/${repo}/git/refs/tags/${tag}" >/dev/null 2>&1 || true
129- deleted=$((deleted + 1))
130- fi
108+ echo "Deleting tag ref: ${ref}"
109+ gh api --repo "$repo" -X DELETE "repos/${owner}/${name}/git/refs/tags/${tag}" >/dev/null 2>&1 || true
110+ deleted=$((deleted + 1))
131111 done
132112 done
133113
0 commit comments