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