- 创建三个独立 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
|
kind: pipeline
|
||||||
type: docker
|
type: docker
|
||||||
name: deploy-dev1
|
name: deploy-test
|
||||||
|
|
||||||
# 开发环境1:test 分支触发,部署到 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
|
||||||
|
|
||||||
# 开发环境2:dev2 分支触发,部署到 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
|
||||||
|
|||||||
Reference in New Issue
Block a user