- 创建三个独立 dist 目录 (dist-test, dist-staging, dist-prod) - test 分支 -> kpl 测试环境 - staging 分支 -> aiedu 预生产 - main 分支 -> 生产租户 - 更新 Drone CI/CD 配置
This commit is contained in:
80
.drone.yml
80
.drone.yml
@@ -1,8 +1,8 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy-dev1
|
||||
name: deploy-test
|
||||
|
||||
# 开发环境1:test 分支触发,部署到 kpl-dev
|
||||
# 测试环境:test 分支触发,部署到 kpl
|
||||
trigger:
|
||||
branch:
|
||||
- test
|
||||
@@ -20,14 +20,14 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 5m
|
||||
script:
|
||||
- echo "=== [开发1] 同步代码到 kpl-dev ==="
|
||||
- echo "=== [测试环境] 同步代码 ==="
|
||||
- cd /root/aiedu
|
||||
- git fetch origin
|
||||
- git checkout test 2>/dev/null || git checkout -b test origin/test
|
||||
- git reset --hard origin/test
|
||||
- echo "代码同步完成"
|
||||
|
||||
- name: rebuild-dev1
|
||||
- name: build-frontend-test
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host: 120.79.247.16
|
||||
@@ -37,22 +37,39 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 10m
|
||||
script:
|
||||
- echo "=== [开发1] 重建 kpl-dev 环境 ==="
|
||||
- cd /root/aiedu
|
||||
- docker-compose -f docker-compose.dev.yml up -d --build
|
||||
- echo "=== [测试环境] 编译前端到 dist-test ==="
|
||||
- cd /root/aiedu/kaopeilian-frontend
|
||||
- npm install --silent
|
||||
- npm run build
|
||||
- rm -rf /root/aiedu/dist-test/*
|
||||
- cp -r dist/* /root/aiedu/dist-test/
|
||||
- echo "前端编译完成 -> dist-test"
|
||||
|
||||
- name: restart-backend
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host: 120.79.247.16
|
||||
username: root
|
||||
password:
|
||||
from_secret: prod_ssh_password
|
||||
port: 22
|
||||
command_timeout: 5m
|
||||
script:
|
||||
- echo "=== [测试环境] 重启后端 ==="
|
||||
- docker restart kpl-backend-dev
|
||||
- sleep 5
|
||||
- docker ps | grep kpl-
|
||||
- echo "=== [开发1] 部署完成: https://kpl.ireborn.com.cn ==="
|
||||
- echo "=== 测试环境部署完成: https://kpl.ireborn.com.cn ==="
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy-dev2
|
||||
name: deploy-staging
|
||||
|
||||
# 开发环境2:dev2 分支触发,部署到 kaopeilian 主站
|
||||
# 预生产环境:staging 分支触发,部署到 aiedu
|
||||
trigger:
|
||||
branch:
|
||||
- dev2
|
||||
- staging
|
||||
event:
|
||||
- push
|
||||
|
||||
@@ -67,14 +84,14 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 5m
|
||||
script:
|
||||
- echo "=== [开发2] 同步代码到 kaopeilian 主站 ==="
|
||||
- echo "=== [预生产] 同步代码 ==="
|
||||
- cd /root/aiedu
|
||||
- git fetch origin
|
||||
- git checkout dev2 2>/dev/null || git checkout -b dev2 origin/dev2
|
||||
- git reset --hard origin/dev2
|
||||
- git checkout staging 2>/dev/null || git checkout -b staging origin/staging
|
||||
- git reset --hard origin/staging
|
||||
- echo "代码同步完成"
|
||||
|
||||
- name: build-frontend
|
||||
- name: build-frontend-staging
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host: 120.79.247.16
|
||||
@@ -84,13 +101,15 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 10m
|
||||
script:
|
||||
- echo "=== [开发2] 编译前端 ==="
|
||||
- echo "=== [预生产] 编译前端到 dist-staging ==="
|
||||
- cd /root/aiedu/kaopeilian-frontend
|
||||
- npm install --silent
|
||||
- npm run build
|
||||
- echo "前端编译完成"
|
||||
- rm -rf /root/aiedu/dist-staging/*
|
||||
- cp -r dist/* /root/aiedu/dist-staging/
|
||||
- echo "前端编译完成 -> dist-staging"
|
||||
|
||||
- name: rebuild-backend
|
||||
- name: restart-backend
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host: 120.79.247.16
|
||||
@@ -98,21 +117,20 @@ steps:
|
||||
password:
|
||||
from_secret: prod_ssh_password
|
||||
port: 22
|
||||
command_timeout: 10m
|
||||
command_timeout: 5m
|
||||
script:
|
||||
- echo "=== [开发2] 重建 kaopeilian 后端 ==="
|
||||
- cd /root/aiedu
|
||||
- echo "=== [预生产] 重启后端 ==="
|
||||
- docker restart kaopeilian-backend
|
||||
- sleep 5
|
||||
- docker ps | grep kaopeilian-backend
|
||||
- echo "=== [开发2] 部署完成: https://aiedu.ireborn.com.cn ==="
|
||||
- docker ps | grep kaopeilian-
|
||||
- echo "=== 预生产部署完成: https://aiedu.ireborn.com.cn ==="
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy-prod
|
||||
|
||||
# 生产环境:main 分支触发,支持选择性部署租户
|
||||
# 生产环境:main 分支触发,部署到所有租户
|
||||
#
|
||||
# 使用方法:
|
||||
# git commit -m "feat: xxx [all]" - 部署所有租户
|
||||
@@ -137,13 +155,13 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 10m
|
||||
script:
|
||||
- echo "=== [生产] 同步代码到生产服务器 ==="
|
||||
- echo "=== [生产] 同步代码 ==="
|
||||
- cd /root/aiedu
|
||||
- git fetch origin
|
||||
- git reset --hard origin/main
|
||||
- echo "代码同步完成"
|
||||
|
||||
- name: build-frontend
|
||||
- name: build-frontend-prod
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host: 120.79.247.16
|
||||
@@ -153,11 +171,13 @@ steps:
|
||||
port: 22
|
||||
command_timeout: 10m
|
||||
script:
|
||||
- echo "=== [生产] 编译前端(所有租户共享)==="
|
||||
- echo "=== [生产] 编译前端到 dist-prod ==="
|
||||
- cd /root/aiedu/kaopeilian-frontend
|
||||
- npm install --silent
|
||||
- npm run build
|
||||
- echo "前端编译完成,所有租户已更新"
|
||||
- rm -rf /root/aiedu/dist-prod/*
|
||||
- cp -r dist/* /root/aiedu/dist-prod/
|
||||
- echo "前端编译完成 -> dist-prod,所有生产租户已更新"
|
||||
|
||||
- name: deploy-tenants
|
||||
image: appleboy/drone-ssh
|
||||
@@ -191,14 +211,14 @@ steps:
|
||||
echo "默认部署所有租户: $TENANTS"
|
||||
fi
|
||||
|
||||
# 构建 docker-compose 命令
|
||||
# 构建 docker compose 命令
|
||||
BACKEND_SERVICES=""
|
||||
for t in $TENANTS; do
|
||||
BACKEND_SERVICES="$BACKEND_SERVICES ${t}-backend"
|
||||
done
|
||||
|
||||
echo "重建后端服务: $BACKEND_SERVICES"
|
||||
docker-compose -f docker-compose.prod-multi.yml up -d --build --no-deps $BACKEND_SERVICES
|
||||
docker compose -f docker-compose.prod-multi.yml up -d --build --no-deps $BACKEND_SERVICES
|
||||
|
||||
sleep 10
|
||||
docker ps | grep backend
|
||||
|
||||
Reference in New Issue
Block a user