Files
2025-11-06 23:25:56 +08:00

62 lines
2.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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