Files
012-kaopeilian/.drone.yml
yuliang_guo e406110af2
All checks were successful
continuous-integration/drone/push Build is passing
feat: 新增灵活部署配置
- 新增 dev2 分支部署开发2环境 (aiedu.ireborn.com.cn)
- 生产部署支持选择性更新租户 [all]/[hua]/[cxw,yy]
- 新增测试环境配置文档
2026-01-28 10:39:55 +08:00

237 lines
6.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
kind: pipeline
type: docker
name: deploy-dev1
# 开发环境1test 分支触发,部署到 kpl-dev
trigger:
branch:
- test
event:
- push
steps:
- name: sync-code
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 "=== [开发1] 同步代码到 kpl-dev ==="
- 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
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 10m
script:
- echo "=== [开发1] 重建 kpl-dev 环境 ==="
- cd /root/aiedu
- docker-compose -f docker-compose.dev.yml up -d --build
- sleep 5
- docker ps | grep kpl-
- echo "=== [开发1] 部署完成: https://kpl.ireborn.com.cn ==="
---
kind: pipeline
type: docker
name: deploy-dev2
# 开发环境2dev2 分支触发,部署到 kaopeilian 主站
trigger:
branch:
- dev2
event:
- push
steps:
- name: sync-code
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 "=== [开发2] 同步代码到 kaopeilian 主站 ==="
- cd /root/aiedu
- git fetch origin
- git checkout dev2 2>/dev/null || git checkout -b dev2 origin/dev2
- git reset --hard origin/dev2
- echo "代码同步完成"
- name: build-frontend
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 10m
script:
- echo "=== [开发2] 编译前端 ==="
- cd /root/aiedu/kaopeilian-frontend
- npm install --silent
- npm run build
- echo "前端编译完成"
- name: rebuild-backend
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 10m
script:
- echo "=== [开发2] 重建 kaopeilian 后端 ==="
- cd /root/aiedu
- docker restart kaopeilian-backend
- sleep 5
- docker ps | grep kaopeilian-backend
- echo "=== [开发2] 部署完成: https://aiedu.ireborn.com.cn ==="
---
kind: pipeline
type: docker
name: deploy-prod
# 生产环境main 分支触发,支持选择性部署租户
#
# 使用方法:
# git commit -m "feat: xxx [all]" - 部署所有租户
# git commit -m "feat: xxx [hua]" - 仅部署 hua
# git commit -m "feat: xxx [cxw,yy,hl]" - 部署指定多个租户
# git commit -m "feat: xxx" - 默认部署所有租户
#
trigger:
branch:
- main
event:
- push
steps:
- name: sync-code-to-server
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 10m
script:
- echo "=== [生产] 同步代码到生产服务器 ==="
- cd /root/aiedu
- git fetch origin
- git reset --hard origin/main
- echo "代码同步完成"
- name: build-frontend
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 10m
script:
- echo "=== [生产] 编译前端(所有租户共享)==="
- cd /root/aiedu/kaopeilian-frontend
- npm install --silent
- npm run build
- echo "前端编译完成,所有租户已更新"
- name: deploy-tenants
image: appleboy/drone-ssh
settings:
host: 120.79.247.16
username: root
password:
from_secret: prod_ssh_password
port: 22
command_timeout: 15m
script:
- echo "=== [生产] 部署租户后端 ==="
- cd /root/aiedu
- |
# 获取 commit message
COMMIT_MSG="${DRONE_COMMIT_MESSAGE}"
echo "Commit: $COMMIT_MSG"
# 所有可用租户
ALL_TENANTS="hua yy hl xy fw ex cxw"
# 解析要部署的租户
if echo "$COMMIT_MSG" | grep -q '\[all\]'; then
TENANTS="$ALL_TENANTS"
echo "部署所有租户: $TENANTS"
elif echo "$COMMIT_MSG" | grep -oP '\[\K[a-z,]+(?=\])' > /tmp/tenants.txt 2>/dev/null; then
TENANTS=$(cat /tmp/tenants.txt | tr ',' ' ')
echo "部署指定租户: $TENANTS"
else
TENANTS="$ALL_TENANTS"
echo "默认部署所有租户: $TENANTS"
fi
# 构建 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
sleep 10
docker ps | grep backend
echo "=== [生产] 部署完成 ==="
echo "已更新租户: $TENANTS"
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: code-check
trigger:
event:
- push
- pull_request
steps:
- name: python-lint
image: python:3.9-slim
commands:
- cd backend
- pip install flake8 -q
- flake8 app --count --select=E9,F63,F7,F82 --show-source --statistics || true
- echo "Python lint completed"
- name: frontend-check
image: node:18-alpine
commands:
- cd frontend
- echo "Frontend check completed"