Skip to content

2.3.0

2.3.0 #12

Workflow file for this run

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