50 lines
1.3 KiB
Bash
Executable File
50 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
token=UTjgSspYQcX-BVUd1UsC
|
|
api=https://gitlab.itpartner.no/api/v4
|
|
|
|
prune () {
|
|
id=$1
|
|
reg=$(curl -s --header "PRIVATE-TOKEN: $token" \
|
|
"$api/projects/$id/registry/repositories" \
|
|
| json_pp | sed -n 's/^ *"id" *: *\([0-9]\+\).*/\1/p')
|
|
for i in $reg; do
|
|
curl -s --request DELETE --data 'keep_n=10' \
|
|
--data 'name_regex=.*[0-9].*' \
|
|
--header "PRIVATE-TOKEN: $token" \
|
|
"$api/projects/$id/registry/repositories/$i/tags"
|
|
done
|
|
}
|
|
|
|
gc () {
|
|
pod=$(kubectl get pod -n gitlab -lapp=registry | tail -1 | cut -d' ' -f1)
|
|
kubectl exec -n gitlab $pod -- \
|
|
registry garbage-collect /etc/docker/registry/config.yml -m
|
|
}
|
|
|
|
all () {
|
|
groups=$(curl -s --header "PRIVATE-TOKEN: $token" "$api/groups" \
|
|
| json_pp | sed -n 's/^ *"id" *: *\([0-9]\+\).*/\1/p')
|
|
for g in $groups; do
|
|
proj=$(curl -s --header "PRIVATE-TOKEN: $token" \
|
|
"$api/groups/$g/projects?simple=true&include_subgroups=true" \
|
|
| json_pp | sed -n 's/^ \{6\}"id" *: *\([0-9]\+\).*/\1/p')
|
|
for p in $proj; do
|
|
prune $p
|
|
done
|
|
done
|
|
}
|
|
|
|
projects () {
|
|
for i in $@; do
|
|
prune $(echo $i | sed 's,/,%2F,g')
|
|
done
|
|
}
|
|
|
|
case $1 in
|
|
--all) all ;;
|
|
*) projects $@
|
|
esac
|
|
|
|
gc
|