-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcleanup-harbor.sh
More file actions
70 lines (59 loc) · 2.5 KB
/
cleanup-harbor.sh
File metadata and controls
70 lines (59 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
set -euo pipefail
# Harbor cleanup script - delete all Redis and nginx charts from Harbor registry
HARBOR_REPO="harbor.portainercloud.io/helm"
echo "🧹 Cleaning up all Redis and nginx charts from Harbor..."
# Check if HARBOR_ROBOT_USER and HARBOR_ROBOT_TOKEN are set
if [[ -z "${HARBOR_ROBOT_USER:-}" ]] || [[ -z "${HARBOR_ROBOT_TOKEN:-}" ]]; then
echo "❌ Error: Please set HARBOR_ROBOT_USER and HARBOR_ROBOT_TOKEN environment variables"
echo "Example:"
echo "export HARBOR_ROBOT_USER='robot\$your-robot-user'"
echo "export HARBOR_ROBOT_TOKEN='your-robot-token'"
exit 1
fi
# Login to Harbor
echo "🔐 Logging into Harbor..."
echo "$HARBOR_ROBOT_TOKEN" | oras login harbor.portainercloud.io \
-u "$HARBOR_ROBOT_USER" --password-stdin
# Get all Redis chart versions
echo "📋 Getting list of all Redis chart versions..."
all_versions=$(oras repo tags "${HARBOR_REPO}/redis" 2>/dev/null || true)
if [[ -z "$all_versions" ]]; then
echo "✅ No Redis charts found in Harbor - already clean!"
exit 0
fi
echo "Found versions:"
echo "$all_versions"
# Delete all versions
echo "🗑️ Deleting all Redis chart versions..."
while IFS= read -r version; do
[[ -z "$version" ]] && continue
echo " • Deleting ${HARBOR_REPO}/redis:$version"
oras manifest delete "${HARBOR_REPO}/redis:$version" --force || true
done <<< "$all_versions"
# Clean up nginx charts
echo "🧹 Cleaning up nginx charts from Harbor..."
nginx_versions=$(oras repo tags "${HARBOR_REPO}/nginx" 2>/dev/null || true)
if [[ -z "$nginx_versions" ]]; then
echo "✅ No nginx charts found in Harbor - already clean!"
else
echo "Found nginx versions:"
echo "$nginx_versions"
echo "🗑️ Deleting all nginx chart versions..."
while IFS= read -r version; do
[[ -z "$version" ]] && continue
echo " • Deleting ${HARBOR_REPO}/nginx:$version"
oras manifest delete "${HARBOR_REPO}/nginx:$version" --force || true
done <<< "$nginx_versions"
fi
# Also clean up common chart if it exists
echo "🧹 Cleaning up common charts from Harbor..."
common_versions=$(oras repo tags "harbor.portainercloud.io/helm/common" 2>/dev/null || true)
if [[ -n "$common_versions" ]]; then
while IFS= read -r version; do
[[ -z "$version" ]] && continue
echo " • Deleting harbor.portainercloud.io/helm/common:$version"
oras manifest delete "harbor.portainercloud.io/helm/common:$version" --force || true
done <<< "$common_versions"
fi
echo "✅ Harbor cleanup complete!"