From 9d12fc7fdd0fdbc3406afc4e782806e4bd31f1d5 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index af81d846..fd4a22dc 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -1,13 +1,12 @@ -name: Build and Push to Target Registry +name: Build and Push to Docker Registry -# 监听master分支的推送事件 on: push: branches: [ master ] jobs: build-and-deploy: - name: 构建并推送镜像到目标仓库 + name: 构建并推送镜像到Docker Registry runs-on: ubuntu timeout-minutes: 30 @@ -21,20 +20,30 @@ jobs: run: | echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests - echo "===== Maven构建完成 =====" - name: 构建并推送Docker镜像 env: - # 替换为你的Docker Registry地址(例如:localhost:5000 或 192.168.1.100:5000) + # 目标仓库地址(你的新建仓库) TARGET_REGISTRY: 127.0.0.1:5000 # 目标仓库中的项目名称 TARGET_PROJECT: smartparks + # 基础镜像所在仓库地址(需要认证的仓库) + BASE_REGISTRY: 172.100.10.45:3000 + # 基础镜像仓库的登录凭证(在Gitea secrets中配置) + BASE_REGISTRY_USERNAME: ${{ secrets.BASE_REGISTRY_USERNAME }} + BASE_REGISTRY_PASSWORD: ${{ secrets.BASE_REGISTRY_PASSWORD }} run: | echo "===== 环境信息 =====" echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" + echo "基础镜像仓库: $BASE_REGISTRY" - # 【删除登录步骤】因为仓库无认证,无需登录 + # 关键步骤:先登录到基础镜像仓库(解决401认证问题) + echo "===== 登录基础镜像仓库 =====" + if ! echo "$BASE_REGISTRY_PASSWORD" | docker login $BASE_REGISTRY -u $BASE_REGISTRY_USERNAME --password-stdin; then + echo "错误:登录基础镜像仓库 $BASE_REGISTRY 失败,请检查账户密码" + exit 1 + fi echo "===== 查找项目中的Dockerfile =====" dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") @@ -43,7 +52,7 @@ jobs: exit 0 fi - # 处理每个Dockerfile(后续构建、推送逻辑与之前类似,保持不变) + # 处理每个Dockerfile echo "$dockerfiles" | while read -r dockerfile; do echo "===== 处理Dockerfile: $dockerfile =====" @@ -58,13 +67,14 @@ jobs: exit 1 fi - echo "===== 推送镜像到仓库 =====" + echo "===== 推送镜像到目标仓库 =====" + # 目标仓库无认证,直接推送 if ! docker push "$full_image_name"; then - echo "错误:推送镜像失败,请检查仓库是否可访问" + echo "错误:推送镜像到目标仓库失败,请检查仓库是否可访问" exit 1 fi - # 推送latest标签(逻辑保持不变) + # 推送latest标签 latest_image="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-latest" echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" @@ -75,5 +85,6 @@ jobs: done echo "===== 清理操作 =====" + docker logout $BASE_REGISTRY # 退出基础镜像仓库登录 docker system prune -f echo "===== 所有操作完成 ====="