diff --git a/.github/workflows/buidl_and_push_ghcr.yml b/.github/workflows/buidl_and_push_ghcr.yml index 966deb6..aa633a9 100644 --- a/.github/workflows/buidl_and_push_ghcr.yml +++ b/.github/workflows/buidl_and_push_ghcr.yml @@ -1,44 +1,54 @@ name: Docker Image CI on: - workflow_dispatch: # 保留手动触发 - push: # 添加 push 事件触发 - branches: # 指定触发分支 - - main # 当推送代码到 main 分支时触发 - -# 显式声明权限 -permissions: - packages: write # 允许写入 packages - contents: read # 允许读取仓库内容 + workflow_dispatch: + push: + branches: + - main jobs: build: + # 注意:Gitea 的 runner 标签需要在 runner 配置文件中定义 + # 如果你的 runner 标签不是 ubuntu-latest,请修改这里 (例如: linux, host 等) runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + # 1. 检出代码 + # Gitea 会自动从 https://github.com/actions/checkout 镜像或重定向 + - name: Checkout code + uses: actions/checkout@v4 - # 设置 Docker Buildx - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + # 2. 设置 Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - # 登录 GitHub Container Registry - - name: Log in to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} # 你的用户名: zeroornull - password: ${{ secrets.GITHUB_TOKEN }} + # 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 }} + username: ${{ gitea.actor }} + password: ${{ secrets.GITEA_TOKEN }} - # 构建并推送 Docker 镜像 - - name: Build and push Docker image - run: | - # 使用个人命名空间,镜像名改为 my-docs - IMAGE_NAME="ghcr.io/zeroornull/my-docs" - echo "Pushing to: $IMAGE_NAME" - docker build . --file Dockerfile \ - --tag "$IMAGE_NAME:latest" \ - --tag "$IMAGE_NAME:${{ github.sha }}" - docker push "$IMAGE_NAME:latest" - docker push "$IMAGE_NAME:${{ github.sha }}" + # 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" + + echo "Pushing to: $IMAGE_NAME" + + docker build . --file Dockerfile \ + --tag "$IMAGE_NAME:latest" \ + --tag "$IMAGE_NAME:${{ gitea.sha }}" + + docker push "$IMAGE_NAME:latest" + docker push "$IMAGE_NAME:${{ gitea.sha }}" \ No newline at end of file