feat: 前端独立部署 - 测试/预生产/生产环境隔离
Some checks failed
continuous-integration/drone/push Build is failing

- 创建三个独立 dist 目录 (dist-test, dist-staging, dist-prod)
- test 分支 -> kpl 测试环境
- staging 分支 -> aiedu 预生产
- main 分支 -> 生产租户
- 更新 Drone CI/CD 配置
This commit is contained in:
yuliang_guo
2026-01-28 12:01:07 +08:00
parent e406110af2
commit 22241fb5b6

View File

@@ -1,8 +1,8 @@
kind: pipeline
type: docker
name: deploy-dev1
name: deploy-test
# 开发环境1test 分支触发,部署到 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
# 开发环境2dev2 分支触发,部署到 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