Skip to content

Commit 77fafc0

Browse files
committed
docker部署流
1 parent 7817fe5 commit 77fafc0

10 files changed

Lines changed: 645 additions & 117 deletions

.github/workflows/build-yunyu-server-image-jar.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
paths:
88
- "yunyu-server/**"
99
- "yunyu-native-image-support/**"
10-
- "docker/jar/**"
10+
- "docker/backend/**"
1111
- ".dockerignore"
1212
- ".github/workflows/build-yunyu-server-image-jar.yml"
1313
workflow_dispatch:
@@ -53,20 +53,20 @@ jobs:
5353
uses: docker/build-push-action@v6
5454
with:
5555
context: .
56-
file: ./docker/jar/Dockerfile
56+
file: ./docker/backend/Dockerfile.jvm
5757
push: true
5858
platforms: linux/amd64,linux/arm64
5959
tags: ${{ steps.meta.outputs.tags }}
6060
labels: ${{ steps.meta.outputs.labels }}
61-
cache-from: type=gha
62-
cache-to: type=gha,mode=max
61+
cache-from: type=gha,scope=jvm
62+
cache-to: type=gha,mode=max,scope=jvm
6363

6464
- name: Output image summary
6565
run: |
6666
echo "## Yunyu Server 镜像构建结果" >> "$GITHUB_STEP_SUMMARY"
6767
echo "" >> "$GITHUB_STEP_SUMMARY"
6868
echo "- 镜像仓库:\`${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\`" >> "$GITHUB_STEP_SUMMARY"
69-
echo "- Dockerfile:\`docker/jar/Dockerfile\`" >> "$GITHUB_STEP_SUMMARY"
69+
echo "- Dockerfile:\`docker/backend/Dockerfile.jvm\`" >> "$GITHUB_STEP_SUMMARY"
7070
echo "- 构建上下文:\`.\`" >> "$GITHUB_STEP_SUMMARY"
7171
echo "" >> "$GITHUB_STEP_SUMMARY"
7272
echo "### 实际生成的镜像标签" >> "$GITHUB_STEP_SUMMARY"

.github/workflows/build-yunyu-server-image.yml

Lines changed: 0 additions & 81 deletions
This file was deleted.

.github/workflows/build-yunyu-server-native-image.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
paths:
88
- "yunyu-server/**"
99
- "yunyu-native-image-support/**"
10-
- "docker/native-image/**"
10+
- "docker/backend/**"
1111
- ".dockerignore"
1212
- ".github/workflows/build-yunyu-server-native-image.yml"
1313
workflow_dispatch:
@@ -55,7 +55,7 @@ jobs:
5555
uses: docker/build-push-action@v6
5656
with:
5757
context: .
58-
file: ./docker/native-image/Dockerfile
58+
file: ./docker/backend/Dockerfile.native
5959
push: true
6060
platforms: linux/amd64
6161
tags: |
@@ -72,8 +72,8 @@ jobs:
7272
echo "- 构建分支:\`${{ github.ref_name }}\`" >> "$GITHUB_STEP_SUMMARY"
7373
echo "- 镜像仓库:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}\`" >> "$GITHUB_STEP_SUMMARY"
7474
echo "- 构建平台:\`linux/amd64\`" >> "$GITHUB_STEP_SUMMARY"
75-
echo "- Dockerfile:\`docker/native-image/Dockerfile\`" >> "$GITHUB_STEP_SUMMARY"
76-
echo "- 部署编排:\`docker/native-image/docker-compose.yml\`" >> "$GITHUB_STEP_SUMMARY"
75+
echo "- Dockerfile:\`docker/backend/Dockerfile.native\`" >> "$GITHUB_STEP_SUMMARY"
76+
echo "- 部署编排:\`docker/docker-compose.yml\`" >> "$GITHUB_STEP_SUMMARY"
7777
echo "" >> "$GITHUB_STEP_SUMMARY"
7878
echo "### 实际生成的架构镜像标签" >> "$GITHUB_STEP_SUMMARY"
7979
echo "" >> "$GITHUB_STEP_SUMMARY"
@@ -125,7 +125,7 @@ jobs:
125125
uses: docker/build-push-action@v6
126126
with:
127127
context: .
128-
file: ./docker/native-image/Dockerfile
128+
file: ./docker/backend/Dockerfile.native
129129
push: true
130130
platforms: linux/arm64
131131
tags: |
@@ -142,8 +142,8 @@ jobs:
142142
echo "- 构建分支:\`${{ github.ref_name }}\`" >> "$GITHUB_STEP_SUMMARY"
143143
echo "- 镜像仓库:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}\`" >> "$GITHUB_STEP_SUMMARY"
144144
echo "- 构建平台:\`linux/arm64\`" >> "$GITHUB_STEP_SUMMARY"
145-
echo "- Dockerfile:\`docker/native-image/Dockerfile\`" >> "$GITHUB_STEP_SUMMARY"
146-
echo "- 部署编排:\`docker/native-image/docker-compose.yml\`" >> "$GITHUB_STEP_SUMMARY"
145+
echo "- Dockerfile:\`docker/backend/Dockerfile.native\`" >> "$GITHUB_STEP_SUMMARY"
146+
echo "- 部署编排:\`docker/docker-compose.yml\`" >> "$GITHUB_STEP_SUMMARY"
147147
echo "" >> "$GITHUB_STEP_SUMMARY"
148148
echo "### 实际生成的架构镜像标签" >> "$GITHUB_STEP_SUMMARY"
149149
echo "" >> "$GITHUB_STEP_SUMMARY"
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
name: Build Yunyu Web Image
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "yunyu-web/**"
9+
- "docker/frontend/**"
10+
- ".dockerignore"
11+
- ".github/workflows/build-yunyu-web-image.yml"
12+
workflow_dispatch:
13+
14+
env:
15+
REGISTRY: ghcr.io
16+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
17+
18+
jobs:
19+
build-amd64:
20+
name: Build amd64 Web Image
21+
runs-on: ubuntu-24.04
22+
permissions:
23+
contents: read
24+
packages: write
25+
26+
steps:
27+
- name: Checkout repository
28+
uses: actions/checkout@v4
29+
30+
- name: Prepare image name
31+
id: image
32+
run: |
33+
echo "name=$(echo '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')/yunyu-web" >> "$GITHUB_OUTPUT"
34+
35+
- name: Set up Docker Buildx
36+
uses: docker/setup-buildx-action@v3
37+
38+
- name: Log in to GitHub Container Registry
39+
uses: docker/login-action@v3
40+
with:
41+
registry: ${{ env.REGISTRY }}
42+
username: ${{ github.actor }}
43+
password: ${{ secrets.GITHUB_TOKEN }}
44+
45+
- name: Extract Docker metadata
46+
id: meta
47+
uses: docker/metadata-action@v5
48+
with:
49+
images: ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}
50+
tags: |
51+
type=sha
52+
53+
- name: Build and push amd64 web image
54+
uses: docker/build-push-action@v6
55+
with:
56+
context: .
57+
file: ./docker/frontend/Dockerfile
58+
push: true
59+
platforms: linux/amd64
60+
tags: |
61+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-amd64
62+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-amd64
63+
labels: ${{ steps.meta.outputs.labels }}
64+
cache-from: type=gha,scope=web-amd64
65+
cache-to: type=gha,mode=max,scope=web-amd64
66+
67+
- name: Output amd64 image summary
68+
run: |
69+
echo "## Yunyu Web amd64 镜像构建结果" >> "$GITHUB_STEP_SUMMARY"
70+
echo "" >> "$GITHUB_STEP_SUMMARY"
71+
echo "- 构建分支:\`${{ github.ref_name }}\`" >> "$GITHUB_STEP_SUMMARY"
72+
echo "- 镜像仓库:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}\`" >> "$GITHUB_STEP_SUMMARY"
73+
echo "- 构建平台:\`linux/amd64\`" >> "$GITHUB_STEP_SUMMARY"
74+
echo "- Dockerfile:\`docker/frontend/Dockerfile\`" >> "$GITHUB_STEP_SUMMARY"
75+
echo "" >> "$GITHUB_STEP_SUMMARY"
76+
echo "### 实际生成的架构镜像标签" >> "$GITHUB_STEP_SUMMARY"
77+
echo "" >> "$GITHUB_STEP_SUMMARY"
78+
echo "- \`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-amd64\`" >> "$GITHUB_STEP_SUMMARY"
79+
echo "- \`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-amd64\`" >> "$GITHUB_STEP_SUMMARY"
80+
echo "" >> "$GITHUB_STEP_SUMMARY"
81+
echo "### 拉取命令示例" >> "$GITHUB_STEP_SUMMARY"
82+
echo "" >> "$GITHUB_STEP_SUMMARY"
83+
echo "\`\`\`bash" >> "$GITHUB_STEP_SUMMARY"
84+
echo "docker pull ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-amd64" >> "$GITHUB_STEP_SUMMARY"
85+
echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY"
86+
87+
build-arm64:
88+
name: Build arm64 Web Image
89+
runs-on: ubuntu-24.04-arm
90+
permissions:
91+
contents: read
92+
packages: write
93+
94+
steps:
95+
- name: Checkout repository
96+
uses: actions/checkout@v4
97+
98+
- name: Prepare image name
99+
id: image
100+
run: |
101+
echo "name=$(echo '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')/yunyu-web" >> "$GITHUB_OUTPUT"
102+
103+
- name: Set up Docker Buildx
104+
uses: docker/setup-buildx-action@v3
105+
106+
- name: Log in to GitHub Container Registry
107+
uses: docker/login-action@v3
108+
with:
109+
registry: ${{ env.REGISTRY }}
110+
username: ${{ github.actor }}
111+
password: ${{ secrets.GITHUB_TOKEN }}
112+
113+
- name: Extract Docker metadata
114+
id: meta
115+
uses: docker/metadata-action@v5
116+
with:
117+
images: ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}
118+
tags: |
119+
type=sha
120+
121+
- name: Build and push arm64 web image
122+
uses: docker/build-push-action@v6
123+
with:
124+
context: .
125+
file: ./docker/frontend/Dockerfile
126+
push: true
127+
platforms: linux/arm64
128+
tags: |
129+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-arm64
130+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-arm64
131+
labels: ${{ steps.meta.outputs.labels }}
132+
cache-from: type=gha,scope=web-arm64
133+
cache-to: type=gha,mode=max,scope=web-arm64
134+
135+
- name: Output arm64 image summary
136+
run: |
137+
echo "## Yunyu Web arm64 镜像构建结果" >> "$GITHUB_STEP_SUMMARY"
138+
echo "" >> "$GITHUB_STEP_SUMMARY"
139+
echo "- 构建分支:\`${{ github.ref_name }}\`" >> "$GITHUB_STEP_SUMMARY"
140+
echo "- 镜像仓库:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}\`" >> "$GITHUB_STEP_SUMMARY"
141+
echo "- 构建平台:\`linux/arm64\`" >> "$GITHUB_STEP_SUMMARY"
142+
echo "- Dockerfile:\`docker/frontend/Dockerfile\`" >> "$GITHUB_STEP_SUMMARY"
143+
echo "" >> "$GITHUB_STEP_SUMMARY"
144+
echo "### 实际生成的架构镜像标签" >> "$GITHUB_STEP_SUMMARY"
145+
echo "" >> "$GITHUB_STEP_SUMMARY"
146+
echo "- \`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-arm64\`" >> "$GITHUB_STEP_SUMMARY"
147+
echo "- \`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-arm64\`" >> "$GITHUB_STEP_SUMMARY"
148+
echo "" >> "$GITHUB_STEP_SUMMARY"
149+
echo "### 拉取命令示例" >> "$GITHUB_STEP_SUMMARY"
150+
echo "" >> "$GITHUB_STEP_SUMMARY"
151+
echo "\`\`\`bash" >> "$GITHUB_STEP_SUMMARY"
152+
echo "docker pull ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest-arm64" >> "$GITHUB_STEP_SUMMARY"
153+
echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY"
154+
155+
merge-manifest:
156+
name: Merge Multi-Arch Manifest
157+
runs-on: ubuntu-24.04
158+
needs:
159+
- build-amd64
160+
- build-arm64
161+
permissions:
162+
contents: read
163+
packages: write
164+
165+
steps:
166+
- name: Prepare image name
167+
id: image
168+
run: |
169+
echo "name=$(echo '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')/yunyu-web" >> "$GITHUB_OUTPUT"
170+
171+
- name: Set up Docker Buildx
172+
uses: docker/setup-buildx-action@v3
173+
174+
- name: Log in to GitHub Container Registry
175+
uses: docker/login-action@v3
176+
with:
177+
registry: ${{ env.REGISTRY }}
178+
username: ${{ github.actor }}
179+
password: ${{ secrets.GITHUB_TOKEN }}
180+
181+
- name: Create and push multi-arch manifest
182+
run: |
183+
docker buildx imagetools create \
184+
--tag ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest \
185+
--tag ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }} \
186+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-amd64 \
187+
${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}-arm64
188+
189+
- name: Inspect multi-arch manifest
190+
run: |
191+
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest
192+
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}
193+
194+
- name: Output manifest summary
195+
run: |
196+
echo "## Yunyu Web 多架构 Manifest 合并结果" >> "$GITHUB_STEP_SUMMARY"
197+
echo "" >> "$GITHUB_STEP_SUMMARY"
198+
echo "- 构建分支:\`${{ github.ref_name }}\`" >> "$GITHUB_STEP_SUMMARY"
199+
echo "- 最终标签:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest\`" >> "$GITHUB_STEP_SUMMARY"
200+
echo "- 最终标签:\`${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:sha-${{ github.sha }}\`" >> "$GITHUB_STEP_SUMMARY"
201+
echo "- 包含架构:\`linux/amd64\`、\`linux/arm64\`" >> "$GITHUB_STEP_SUMMARY"

0 commit comments

Comments
 (0)