Skip to content

Commit 976eecc

Browse files
committed
构建多平台镜像
1 parent ac91e3f commit 976eecc

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build and Push Multi-Platform Docker Images with Compose
1+
name: Build and Push Multi-Platform Docker Images
22

33
on:
44
push:
@@ -12,20 +12,19 @@ jobs:
1212
- name: Checkout code
1313
uses: actions/checkout@v4
1414

15-
# 步骤:设置 Docker Buildx 并启用多平台支持
15+
# 启用 Buildx 并安装 QEMU(支持多平台)
1616
- name: Set up Docker Buildx
1717
uses: docker/setup-buildx-action@v3
1818
with:
19-
# 启用 QEMU 模拟器(支持非本机架构构建,如在 amd64 机器上构建 arm64)
20-
install: true
19+
install: true # 安装 QEMU 模拟器
2120

2221
- name: Login to Docker Hub
2322
uses: docker/login-action@v3
2423
with:
2524
username: ${{ secrets.DOCKER_HUB_USERNAME }}
2625
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
2726

28-
# 生成标签(同上,保持不变
27+
# 生成标签(同上)
2928
- name: Determine image tags
3029
id: set-tags
3130
run: |
@@ -42,25 +41,26 @@ jobs:
4241
fi
4342
echo "BASE_TAG=$BASE_TAG" >> $GITHUB_ENV
4443
echo "ALL_TAGS=$ALL_TAGS" >> $GITHUB_ENV
44+
echo "DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}" >> $GITHUB_ENV
4545
46-
# 构建多平台镜像(关键步骤)
47-
- name: Build multi-platform images with docker compose
48-
run: |
49-
# 指定目标平台(根据需求添加,如 linux/amd64,linux/arm64,linux/arm/v7 等)
50-
TAG=${{ env.BASE_TAG }} docker compose build --platform linux/amd64,linux/arm64
51-
52-
# 推送多平台镜像(包含所有标签)
53-
- name: Push backend multi-platform images
54-
run: |
55-
IFS=',' read -ra TAGS <<< "${{ env.ALL_TAGS }}"
56-
for TAG in "${TAGS[@]}"; do
57-
# 推送多平台镜像(buildx 会自动处理 manifest)
58-
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/timelesstales-backend:$TAG
59-
done
46+
# 构建并推送后端多平台镜像
47+
- name: Build and push backend
48+
uses: docker/build-push-action@v5
49+
with:
50+
context: ./package/server # 后端 Dockerfile 路径
51+
platforms: linux/amd64,linux/arm64 # 目标平台
52+
push: true # 直接推送
53+
tags: |
54+
${{ env.DOCKER_HUB_USERNAME }}/timelesstales-backend:${{ env.BASE_TAG }}
55+
${{ env.EXTRA_TAGS != '' && format('{0}/timelesstales-backend:latest', env.DOCKER_HUB_USERNAME) || '' }}
6056
61-
- name: Push frontend multi-platform images
62-
run: |
63-
IFS=',' read -ra TAGS <<< "${{ env.ALL_TAGS }}"
64-
for TAG in "${TAGS[@]}"; do
65-
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/timelesstales-frontend:$TAG
66-
done
57+
# 构建并推送前端多平台镜像
58+
- name: Build and push frontend
59+
uses: docker/build-push-action@v5
60+
with:
61+
context: ./package/website # 前端 Dockerfile 路径
62+
platforms: linux/amd64,linux/arm64 # 目标平台
63+
push: true
64+
tags: |
65+
${{ env.DOCKER_HUB_USERNAME }}/timelesstales-frontend:${{ env.BASE_TAG }}
66+
${{ env.EXTRA_TAGS != '' && format('{0}/timelesstales-frontend:latest', env.DOCKER_HUB_USERNAME) || '' }}

0 commit comments

Comments
 (0)