From 1e89a17c15c109338ff7a8a615b86d3f6511390a Mon Sep 17 00:00:00 2001 From: tech-shrimp Date: Tue, 11 Jun 2024 15:39:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9=E9=87=8D=E5=90=8D?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yaml | 96 ++++++++++++++++++++++++++-------- README.md | 12 ++++- doc/镜像重名.png | Bin 0 -> 29065 bytes images.txt | 7 ++- 4 files changed, 87 insertions(+), 28 deletions(-) create mode 100644 doc/镜像重名.png diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 8b01b20..aa9d2d7 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -4,6 +4,9 @@ on: workflow_dispatch: push: branches: [ main ] + # 定时执行,此处使用UTC时间 + #schedule: + # - cron: '00 23 * * *' env: @@ -19,34 +22,81 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Docker buildx - uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf + uses: docker/setup-buildx-action@v3 - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Build and push image Aliyun run: | docker login -u $ALIYUN_REGISTRY_USER -p $ALIYUN_REGISTRY_PASSWORD $ALIYUN_REGISTRY + # 数据预处理,判断镜像是否重名 + declare -A duplicate_images + declare -A temp_map while IFS= read -r line; do - [[ -z "$line" ]] && continue - echo "docker pull $line" - docker pull $line - platform=$(echo "$line" | awk -F'--platform[ =]' '{if (NF>1) print $2}' | awk '{print $1}') - echo "platform is $platform" - # 如果存在架构信息 将架构信息拼到镜像名称前面 - if [ -z "$platform" ]; then - platform_prefix="" - else - platform_prefix="${platform//\//_}_" - fi - echo "platform_prefix is $platform_prefix" - # 获取镜像的完整名称,例如kasmweb/nginx:1.25.3(命名空间/镜像名:版本号) - image=$(echo "$line" | awk '{print $NF}') - # 获取 镜像名:版本号 例如nginx:1.25.3 - image_name_tag=$(echo "$image" | awk -F'/' '{print $NF}') - new_image="$ALIYUN_REGISTRY/$ALIYUN_NAME_SPACE/$platform_prefix$image_name_tag" - echo "docker tag $image $new_image" - docker tag $image $new_image - echo "docker push $new_image" - docker push $new_image + [[ -z "$line" ]] && continue + # 获取镜像的完整名称,例如kasmweb/nginx:1.25.3(命名空间/镜像名:版本号) + image=$(echo "$line" | awk '{print $NF}') + echo "image $image" + # 获取镜像名:版本号 例如nginx:1.25.3 + image_name_tag=$(echo "$image" | awk -F'/' '{print $NF}') + echo "image_name_tag $image_name_tag" + # 获取命名空间 + name_space=$(echo "$image" | awk -F'/' '{if (NF>1) print $1}'| awk '{print $1}') + echo "name_space: $name_space" + # 这里不要是空值影响判断 + name_space="${name_space}_" + # 获取镜像名例如nginx + image_name=$(echo "$image_name_tag" | awk -F':' '{print $1}') + + # 如果镜像存在于数组中,则添加temp_map + if [[ -n "${temp_map[$image_name]}" ]]; then + # 如果temp_map已经存在镜像名,判断是不是同一命名空间 + if [[ "${temp_map[$image_name]}" != $name_space ]]; then + echo "duplicate image name: $image_name" + duplicate_images[$image_name]="true" + fi + else + # 存镜像的命名空间 + temp_map[$image_name]=$name_space + fi done < images.txt + + + while IFS= read -r line; do + [[ -z "$line" ]] && continue + echo "docker pull $line" + docker pull $line + platform=$(echo "$line" | awk -F'--platform[ =]' '{if (NF>1) print $2}' | awk '{print $1}') + echo "platform is $platform" + # 如果存在架构信息 将架构信息拼到镜像名称前面 + if [ -z "$platform" ]; then + platform_prefix="" + else + platform_prefix="${platform//\//_}_" + fi + echo "platform_prefix is $platform_prefix" + # 获取镜像的完整名称,例如kasmweb/nginx:1.25.3(命名空间/镜像名:版本号) + image=$(echo "$line" | awk '{print $NF}') + # 获取 镜像名:版本号 例如nginx:1.25.3 + image_name_tag=$(echo "$image" | awk -F'/' '{print $NF}') + # 获取命名空间 例如kasmweb + name_space=$(echo "$image" | awk -F'/' '{if (NF>1) print $1}'| awk '{print $1}') + # 获取镜像名例 例如nginx + image_name=$(echo "$image_name_tag" | awk -F':' '{print $1}') + + name_space_prefix="" + # 如果镜像名重名 + if [[ -n "${duplicate_images[$image_name]}" ]]; then + #如果命名空间非空,将命名空间加到前缀 + if [[ -n "${name_space}" ]]; then + name_space_prefix="${name_space}_" + fi + fi + + new_image="$ALIYUN_REGISTRY/$ALIYUN_NAME_SPACE/$platform_prefix$name_space_prefix$image_name_tag" + echo "docker tag $image $new_image" + docker tag $image $new_image + echo "docker push $new_image" + docker push $new_image + done < images.txt \ No newline at end of file diff --git a/README.md b/README.md index 92b5a51..6d0d18a 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,20 @@ shrimp-images 即 ALIYUN_NAME_SPACE
alpine 即阿里云中显示的镜像名
### 多架构 -阿里镜像服务个人版并不提供多架构功能,需要在images.txt中用 --platform=xxxxx手动指定镜像架构 +需要在images.txt中用 --platform=xxxxx手动指定镜像架构 指定后的架构会以前缀的形式放在镜像名字前面 ![](doc/多架构.png) +### 镜像重名 +程序自动判断是否存在名称相同, 但是属于不同命名空间的镜像。 +如果存在,会把命名空间作为前缀加在镜像名称前。 +例如: +``` +xhofe/alist +xiaoyaliu/alist +``` +![](doc/镜像重名.png) + ### 定时执行 修改/.github/workflows/docker.yaml文件 添加 schedule即可定时执行(此处cron使用UTC时区) diff --git a/doc/镜像重名.png b/doc/镜像重名.png new file mode 100644 index 0000000000000000000000000000000000000000..b1070584342d7a3e7b58fb91ad8708b03cda5ba8 GIT binary patch literal 29065 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 literal 0 HcmV?d00001 diff --git a/images.txt b/images.txt index 21d3ecb..45f4478 100644 --- a/images.txt +++ b/images.txt @@ -1,5 +1,4 @@ -alpine -python:alpine3.19 +nginx kasmweb/nginx:1.25.3 ---platform=linux/amd64 redis:7.0.15-alpine3.20 ---platform=linux/arm/v7 redis:7.0.15-alpine3.20 +xhofe/alist:latest +--platform=linux/arm64 xiaoyaliu/alist