Spaces:
Paused
Paused
| name: Build and Push Multi-Arch Docker Image | |
| # 触发条件:推送 v* 标签时(如 git tag v1.1.0 && git push --tags) | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| # 权限:允许 Actions 推送到 GHCR | |
| permissions: | |
| contents: read | |
| packages: write | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest # AMD64 主机,用于交叉构建 ARM | |
| steps: | |
| # 检出代码 | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # 设置 Docker Buildx(启用多架构) | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # 登录 GHCR(使用 GitHub Token) | |
| - name: Login to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| # 设置 QEMU(用于 ARM 交叉构建) | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| # 从标签提取版本(匹配 v1.0.0 格式) | |
| - name: Extract version from tag | |
| id: version | |
| run: | | |
| VERSION="${{ github.ref_name }}" | |
| echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
| # 构建并推送多架构镜像 | |
| - name: Build and push multi-arch image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./Dockerfile # 你的 Dockerfile 路径 | |
| push: true # 直接推送 | |
| platforms: linux/amd64,linux/arm64 # 目标架构 | |
| tags: | | |
| ghcr.io/wechat-article/wechat-article-exporter:${{ steps.version.outputs.version }}-amd64 | |
| ghcr.io/wechat-article/wechat-article-exporter:${{ steps.version.outputs.version }}-arm64 | |
| ghcr.io/wechat-article/wechat-article-exporter:${{ steps.version.outputs.version }} | |
| ghcr.io/wechat-article/wechat-article-exporter:latest | |
| build-args: | | |
| VERSION=${{ steps.version.outputs.version }} # 传递到 Dockerfile 的 ARG | |
| cache-from: type=gha # 使用 GitHub Actions 缓存加速 | |
| cache-to: type=gha,mode=max | |