From 22241fb5b69eca4ded1e7426d2141444a97e5f1e Mon Sep 17 00:00:00 2001 From: yuliang_guo Date: Wed, 28 Jan 2026 12:01:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=89=8D=E7=AB=AF=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=20-=20=E6=B5=8B=E8=AF=95/=E9=A2=84=E7=94=9F?= =?UTF-8?q?=E4=BA=A7/=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建三个独立 dist 目录 (dist-test, dist-staging, dist-prod) - test 分支 -> kpl 测试环境 - staging 分支 -> aiedu 预生产 - main 分支 -> 生产租户 - 更新 Drone CI/CD 配置 --- .drone.yml | 80 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/.drone.yml b/.drone.yml index a16016b..754e859 100644 --- a/.drone.yml +++ b/.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