Skip to content

Commit 919e785

Browse files
committed
feat(ci): add images check config
1 parent 8d564be commit 919e785

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

.github/workflows/docker.yaml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
if echo "$line" | grep -q '^\s*#'; then
6868
continue
6969
fi
70-
70+
7171
# 获取镜像的完整名称,例如kasmweb/nginx:1.25.3(命名空间/镜像名:版本号)
7272
image=$(echo "$line" | awk '{print $NF}')
7373
# 将@sha256:等字符删除
@@ -84,7 +84,7 @@ jobs:
8484
# 获取镜像名例如nginx
8585
image_name=$(echo "$image_name_tag" | awk -F':' '{print $1}')
8686
echo "image_name: $image_name"
87-
87+
8888
# 如果镜像存在于数组中,则添加temp_map
8989
if [[ -n "${temp_map[$image_name]}" ]]; then
9090
# 如果temp_map已经存在镜像名,判断是不是同一命名空间
@@ -95,19 +95,17 @@ jobs:
9595
else
9696
# 存镜像的命名空间
9797
temp_map[$image_name]=$name_space
98-
fi
98+
fi
9999
done < images.txt
100-
101-
100+
101+
102102
while IFS= read -r line || [ -n "$line" ]; do
103103
# 忽略空行与注释
104104
[[ -z "$line" ]] && continue
105105
if echo "$line" | grep -q '^\s*#'; then
106106
continue
107107
fi
108-
109-
echo "docker pull $line"
110-
docker pull $line
108+
111109
platform=$(echo "$line" | awk -F'--platform[ =]' '{if (NF>1) print $2}' | awk '{print $1}')
112110
echo "platform is $platform"
113111
# 如果存在架构信息 将架构信息拼到镜像名称前面
@@ -126,7 +124,7 @@ jobs:
126124
name_space=$(echo "$image" | awk -F'/' '{if (NF==3) print $2; else if (NF==2) print $1; else print ""}')
127125
# 获取镜像名例 例如nginx
128126
image_name=$(echo "$image_name_tag" | awk -F':' '{print $1}')
129-
127+
130128
name_space_prefix=""
131129
# 如果镜像名重名
132130
if [[ -n "${duplicate_images[$image_name]}" ]]; then
@@ -135,10 +133,22 @@ jobs:
135133
name_space_prefix="${name_space}_"
136134
fi
137135
fi
138-
136+
139137
# 将@sha256:等字符删除
140138
image_name_tag="${image_name_tag%%@*}"
141139
new_image="$ALIYUN_REGISTRY/$ALIYUN_NAME_SPACE/$platform_prefix$name_space_prefix$image_name_tag"
140+
141+
# 检查镜像是否已存在于阿里云仓库
142+
echo "检查镜像是否已存在: $new_image"
143+
if docker manifest inspect "$new_image" >/dev/null 2>&1; then
144+
echo "✓ 镜像已存在于阿里云仓库,跳过: $new_image"
145+
continue
146+
else
147+
echo "✗ 镜像不存在,开始下载和上传: $new_image"
148+
fi
149+
150+
echo "docker pull $line"
151+
docker pull $line
142152
echo "docker tag $image $new_image"
143153
docker tag $image $new_image
144154
echo "docker push $new_image"
@@ -152,6 +162,6 @@ jobs:
152162
echo "磁盘空间清理完毕"
153163
echo "=============================================================================="
154164
df -hT
155-
echo "=============================================================================="
156-
165+
echo "=============================================================================="
166+
157167
done < images.txt

0 commit comments

Comments
 (0)