mirror of
https://github.com/wechat-article/wechat-article-exporter.git
synced 2026-06-09 09:02:46 +08:00
62 lines
2.0 KiB
YAML
62 lines
2.0 KiB
YAML
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
|