-
-
Notifications
You must be signed in to change notification settings - Fork 629
/
Copy pathdockerhub.sh
executable file
·45 lines (39 loc) · 1.86 KB
/
dockerhub.sh
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
#!/bin/bash
# Find all values.yaml files in subdirectories
find . -type f -name "values.yaml" | while read -r file; do
# Extract repository references matching docker.io/*
grep -oE 'repository: docker.io/[^[:space:]]+' "$file" | while read -r line; do
repo=$(echo "$line" | cut -d ' ' -f2 | sed 's|docker.io/||')
echo "Checking repo $repo for file $file"
# Check if equivalent ghcr.io, public.ecr.aws, or gcr.io repositories exist
## TODO add checks and such
#ghcr_url="https://ghcr.io/v2/$repo/tags/list"
quay_url="https://quay.io/v2/$repo/tags/list"
ecr_url="https://public.ecr.aws/v2/$repo/tags/list"
# Not sure if we should
# gcr_url="https://mirror.gcr.io/v2/$repo/tags/list"
## TODO add checks and such
# ghcr_exists=$(curl -s -o /dev/null -w "%{http_code}" "$ghcr_url")
quay_exists=$(curl -s -o /dev/null -w "%{http_code}" "$quay_url")
ecr_exists=$(curl -s -o /dev/null -w "%{http_code}" "$ecr_url")
# gcr_exists=$(curl -s -o /dev/null -w "%{http_code}" "$gcr_url")
## TODO add checks and such
# if [[ "$ghcr_exists" == "200" ]]; then
# new_repo="ghcr.io/$repo"
if [[ "$quay_exists" == "200" ]]; then
new_repo="quay.io/$repo"
elif [[ "$ecr_exists" == "200" ]]; then
new_repo="public.ecr.aws/$repo"
# Not sure if we should
# elif [[ "$gcr_exists" == "200" ]]; then
# new_repo="mirror.gcr.io/$repo"
fi
if [[ $new_repo != "" ]]; then
# Replace repository reference in the file
sed -i '' "s|repository: docker.io/$repo|repository: $new_repo|g" "$file"
## For Linux
# sed -i "s|repository: docker.io/$repo|repository: $new_repo|g" "$file"
echo "Updated repository in $file to $new_repo"
fi
done
done