From 93a4c35677a05fd5d6aa4f990aa1a8afc4e50050 Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Thu, 18 Dec 2025 05:12:16 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.github/workflows/buidl=5F?= =?UTF-8?q?and=5Fpush=5Fghcr.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/buidl_and_push_ghcr.yml | 35 +++++++++++++---------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/.github/workflows/buidl_and_push_ghcr.yml b/.github/workflows/buidl_and_push_ghcr.yml index aa633a9..9f31f5e 100644 --- a/.github/workflows/buidl_and_push_ghcr.yml +++ b/.github/workflows/buidl_and_push_ghcr.yml @@ -8,39 +8,44 @@ on: jobs: build: - # 注意:Gitea 的 runner 标签需要在 runner 配置文件中定义 - # 如果你的 runner 标签不是 ubuntu-latest,请修改这里 (例如: linux, host 等) runs-on: ubuntu-latest + + # 🌟 关键点 1: 启动一个 Docker 守护进程容器 (DinD) + services: + docker: + image: docker:dind + options: --privileged + ports: + - 2376:2376 + + # 🌟 关键点 2: 告诉所有步骤通过 TCP 连接 Docker,而不是 Socket + env: + DOCKER_HOST: tcp://docker:2376 + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: /certs/client + DOCKER_TLS_CERTDIR: /certs steps: - # 1. 检出代码 - # Gitea 会自动从 https://github.com/actions/checkout 镜像或重定向 - name: Checkout code uses: actions/checkout@v4 - # 2. 设置 Docker Buildx + # 🌟 关键点 3: 配置 Buildx 使用上面定义的 docker 容器驱动 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + endpoint: tcp://docker:2376 - # 3. 登录 Gitea 容器镜像仓库 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: - # 填写你的 Gitea 域名 (不带 http/https),例如 gitea.example.com - # 如果配置了 defaults,也可以留空,但显式指定更安全 - registry: ${{ gitea.server_url }} + registry: ${{ gitea.server_url }} username: ${{ gitea.actor }} password: ${{ secrets.GITEA_TOKEN }} - # 4. 构建并推送 Docker 镜像 - name: Build and push Docker image run: | - # 这里的 gitea.server_url 包含协议头(http/s),docker tag 需要去掉协议头 - # 下面这行命令提取域名,例如: https://gitea.com -> gitea.com DOMAIN=$(echo "${{ gitea.server_url }}" | sed -e 's|^[^/]*//||' -e 's|/.*$||') - - # 组合镜像名: 域名/用户名/仓库名 (自动转小写) - # 注意:Docker 镜像名必须全小写 REPO_LOWER=$(echo "${{ gitea.repository }}" | tr '[:upper:]' '[:lower:]') IMAGE_NAME="$DOMAIN/$REPO_LOWER"