Skip to content

Commit 79d0934

Browse files
committed
ci(base-image): 更新基础镜像构建工作流
- 将工作流名称从 MySQL 镜像改为 Base Image - 修改触发方式为手动输入版本号- 使用 services 方式启动 mysql 和 redis依赖 - 移除自定义网络创建与清理逻辑 - 简化 schema 导出步骤并移除 webhook 通知 - 支持构建 MySQL 8.0 多平台镜像 (amd64/arm64) - 移除旧的容器清理和 webhook 步骤
1 parent eb08b35 commit 79d0934

File tree

1 file changed

+28
-91
lines changed

1 file changed

+28
-91
lines changed
Lines changed: 28 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
1-
name: Release DongTai IAST MySQL Image (Manual, x86)
1+
name: Release DongTai IAST Base Image
22

33
on:
4-
workflow_dispatch:
4+
workflow_dispatch: # ✅ 改为手动触发
55
inputs:
6-
tag_name:
7-
description: "请输入要构建的版本号(例如 v1.17.7"
6+
version:
7+
description: '手动输入构建版本号,例如 v1.17.7'
88
required: true
9-
default: "v1.0.0"
9+
default: 'v1.17.7'
1010

1111
jobs:
12-
build-mysql:
12+
dongtai-mysql:
13+
name: dongtai-mysql
1314
runs-on: ubuntu-latest
14-
env:
15-
MYSQL_ROOT_PASSWORD: dongtai-iast
16-
NETWORK_NAME: dongtai_net
15+
services:
16+
dongtai-mysql:
17+
image: dongtai/dongtai-mysql:latest
18+
ports:
19+
- 3306:3306
20+
dongtai-redis:
21+
image: dongtai/dongtai-redis:latest
22+
ports:
23+
- 6379:6379
1724
steps:
18-
- name: start-build webhook
19-
uses: joelwmale/webhook-action@master
20-
with:
21-
url: ${{ secrets.WEBHOOK_URL }}
22-
body: >
23-
{"msg_type":"interactive","card":{"config":{"wide_screen_mode":true,"enable_forward":true},"elements":[{"tag":"div","text":{"content":"状态:构建开始\n项目:${{github.repository}}\n流程:${{github.workflow}}\n触发者:${{github.actor}}\n手动输入版本:${{ github.event.inputs.tag_name }}\n","tag":"lark_md"}}]}}
24-
2525
- name: Checkout
2626
uses: actions/checkout@v3
27-
2827
- name: Set up Docker Buildx
2928
uses: docker/setup-buildx-action@v2
3029

@@ -43,79 +42,33 @@ jobs:
4342

4443
- id: release
4544
run: |
46-
TAG_NAME=${{ github.event.inputs.tag_name }}
47-
ID=$(echo ${TAG_NAME##v})
48-
echo "version=$ID" >> $GITHUB_OUTPUT
49-
50-
- name: Create user Docker network
51-
run: |
52-
if docker network ls --format '{{.Name}}' | grep -q "^${NETWORK_NAME}$"; then
53-
echo "network ${NETWORK_NAME} already exists"
54-
else
55-
docker network create ${NETWORK_NAME}
56-
echo "created network ${NETWORK_NAME}"
57-
fi
58-
59-
- name: Start MySQL and Redis containers (on custom network)
60-
run: |
61-
# 启动 mysql(使用 dongtai/dongtai-mysql 镜像,确保镜像包含你需要的初始化)
62-
docker run -d --name dongtai-mysql --network ${NETWORK_NAME} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} dongtai/dongtai-mysql:latest || (docker logs dongtai-mysql && exit 1)
63-
# 启动 redis(仅作为依赖)
64-
docker run -d --name dongtai-redis --network ${NETWORK_NAME} redis:6-alpine || (docker logs dongtai-redis && exit 1)
65-
echo "MySQL & Redis started"
66-
67-
- name: Wait for MySQL ready
68-
run: |
69-
set -e
70-
n=0
71-
until docker exec dongtai-mysql mysql -u root -p'${MYSQL_ROOT_PASSWORD}' -e "SELECT 1" >/dev/null 2>&1; do
72-
n=$((n+1))
73-
echo "waiting mysql... attempt=$n"
74-
if [ $n -ge 30 ]; then
75-
echo "mysql not ready after 30 attempts"
76-
docker logs dongtai-mysql || true
77-
exit 1
78-
fi
79-
sleep 2
80-
done
81-
echo "mysql is ready"
45+
TAG_NAME=${{ github.event.inputs.version }} # ✅ 同样使用手动输入版本号
46+
ID=`echo ${TAG_NAME##v}`
47+
echo "::set-output name=version::$ID"
8248
83-
- name: Pull dongtai-server image
84-
run: |
85-
docker pull wukong.tencentcloudcr.com/dongtai/dongtai-server:${{ steps.release.outputs.version }} || (echo "pull failed" && exit 1)
86-
echo "pulled dongtai-server:${{ steps.release.outputs.version }}"
87-
88-
- name: Run migrate in same network and export schema
49+
- name: Build Mysql only schema to local
8950
working-directory: ./mysql
9051
run: |
91-
set -e
92-
# 以同一个网络启动临时容器来运行 migrate,保证能访问 dongtai-mysql & dongtai-redis
93-
docker run --rm --name dongtai-server-migrate --network ${NETWORK_NAME} \
94-
-v $(pwd)/config-tutorial.ini:/opt/dongtai/dongtai_conf/conf/config.ini \
95-
wukong.tencentcloudcr.com/dongtai/dongtai-server:${{ steps.release.outputs.version }} migrate || (docker logs dongtai-server-migrate || true; echo "migrate failed"; exit 1)
52+
docker pull wukong.tencentcloudcr.com/dongtai/dongtai-server:${{ steps.release.outputs.version }}
53+
docker run -i --name dongtai-server-update -v $(pwd)/config-tutorial.ini:/opt/dongtai/dongtai_conf/conf/config.ini --rm --link `docker ps | grep dongtai-mysql | awk '{print $1}'`:dongtai-mysql \
54+
--link `docker ps | grep dongtai-redis | awk '{print $1}'`:dongtai-redis \
55+
--network ${{ job.container.network }} wukong.tencentcloudcr.com/dongtai/dongtai-server:${{ steps.release.outputs.version }} migrate || exit 1
56+
docker exec -i `docker ps | grep dongtai-mysql | awk '{print $1}'` /bin/bash -c "mysqldump dongtai_webapi -u root -p'dongtai-iast' --single-transaction" > dongtai-mysql-schema.sql || exit 1
9657
97-
# 导出 schema(将数据导出到 runner 工作目录)
98-
docker exec -i $(docker ps -aqf "name=dongtai-mysql") /bin/bash -c \
99-
"mysqldump dongtai_webapi -u root -p'${MYSQL_ROOT_PASSWORD}' --single-transaction" > dongtai-mysql-schema.sql || (docker logs dongtai-mysql && exit 1)
100-
echo "exported schema to dongtai-mysql-schema.sql"
101-
ls -l dongtai-mysql-schema.sql
102-
103-
- name: Build and Push MySQL image (5.7)
58+
- name: Build Mysql only schema to local
10459
uses: docker/build-push-action@v3
10560
with:
10661
context: ./mysql
10762
push: true
108-
platforms: linux/amd64
10963
tags: |
11064
dongtai/dongtai-mysql:${{ steps.release.outputs.version }}
111-
dongtai/dongtai-mysql:latest
11265
113-
- name: Modify Dockerfile to MySQL 8.0
66+
- name: Install Mysql 8.0
11467
working-directory: ./mysql
11568
run: |
11669
sed -i 's#5.7#8.0#g' Dockerfile
11770
118-
- name: Build and Push MySQL image (8.0)
71+
- name: Build Mysql 8.0
11972
uses: docker/build-push-action@v3
12073
with:
12174
context: ./mysql
@@ -124,19 +77,3 @@ jobs:
12477
tags: |
12578
dongtai/dongtai-mysql-8:${{ steps.release.outputs.version }}
12679
dongtai/dongtai-mysql-8:latest
127-
128-
- name: Cleanup containers and network
129-
if: always()
130-
run: |
131-
docker rm -f dongtai-server-migrate || true
132-
docker rm -f dongtai-mysql || true
133-
docker rm -f dongtai-redis || true
134-
docker network rm ${NETWORK_NAME} || true
135-
136-
- name: finish-build webhook
137-
if: always()
138-
uses: joelwmale/webhook-action@master
139-
with:
140-
url: ${{ secrets.WEBHOOK_URL }}
141-
body: >
142-
{"msg_type":"interactive","card":{"config":{"wide_screen_mode":true,"enable_forward":true},"elements":[{"tag":"div","text":{"content":"状态:构建完成\n项目:${{github.repository}}\n触发者:${{github.actor}}\n版本:${{ github.event.inputs.tag_name }}\n","tag":"lark_md"}}]}}

0 commit comments

Comments
 (0)