1- name : Release DongTai IAST MySQL Image (Manual, x86)
1+ name : Release DongTai IAST Base Image
22
33on :
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
1111jobs :
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