chore: 添加多架构Docker构建支持
- 添加多架构构建和合成manifest以支持生成不同平台的Docker镜像。
This commit is contained in:
@@ -1,16 +1,71 @@
|
|||||||
|
# 多机构建需要合成 manifest,不然后提交的 docker 镜像会覆盖前面的
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
env:
|
||||||
go-run:
|
DOCKER_REGISTRY: git.furtherverse.com
|
||||||
runs-on: ubuntu-latest
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: actions/setup-go@v5
|
.docker-setup-buildx: &docker-setup-buildx
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
.docker-login: &docker-login
|
||||||
|
name: Login to Docker Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
cache: false # 使用缓存会非常慢,所以禁用
|
registry: ${{ env.DOCKER_REGISTRY }}
|
||||||
go-version-file: 'go.mod'
|
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
- run: |
|
.build-template: &build-template
|
||||||
go run .
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- <<: *docker-setup-buildx
|
||||||
|
|
||||||
|
- <<: *docker-login
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: docker/Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ env.ARCH }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-amd64:
|
||||||
|
name: Build for AMD64
|
||||||
|
runs-on: ubuntu-latest-amd64
|
||||||
|
env:
|
||||||
|
ARCH: amd64
|
||||||
|
<<: *build-template
|
||||||
|
|
||||||
|
build-arm64:
|
||||||
|
name: Build for ARM64
|
||||||
|
runs-on: ubuntu-latest-arm64
|
||||||
|
env:
|
||||||
|
ARCH: arm64
|
||||||
|
<<: *build-template
|
||||||
|
|
||||||
|
create-manifest:
|
||||||
|
name: Create Image Manifest
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- build-amd64
|
||||||
|
- build-arm64
|
||||||
|
steps:
|
||||||
|
- <<: *docker-setup-buildx
|
||||||
|
|
||||||
|
- <<: *docker-login
|
||||||
|
|
||||||
|
- name: Create manifest
|
||||||
|
uses: int128/docker-manifest-create-action@v2
|
||||||
|
with:
|
||||||
|
tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
sources: |
|
||||||
|
${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64
|
||||||
|
${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-arm64
|
||||||
|
|||||||
Reference in New Issue
Block a user