Some checks failed
continuous-integration/drone/push Build is failing
- 移除 docker compose rebuild,改为直接重启容器 - 后端代码同步到共享目录 /root/aiedu/kaopeilian-backend/app - 保留多租户选择功能 [all]/[hua]/[cxw,yy,hl]
254 lines
6.7 KiB
YAML
254 lines
6.7 KiB
YAML
kind: pipeline
|
||
type: docker
|
||
name: deploy-test
|
||
|
||
# 测试环境:test 分支触发,部署到 kpl
|
||
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 "=== [测试环境] 同步代码 ==="
|
||
- cd /root/aiedu
|
||
- git fetch cicd
|
||
- git checkout test 2>/dev/null || git checkout -b test cicd/test
|
||
- git reset --hard cicd/test
|
||
- echo "代码同步完成"
|
||
|
||
- name: build-frontend-test
|
||
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 "=== [测试环境] 编译前端到 dist-test ==="
|
||
- cd /root/aiedu/frontend
|
||
- npm install --silent
|
||
- npm run build
|
||
- rm -rf /root/aiedu/dist-test/*
|
||
- cp -r dist/* /root/aiedu/dist-test/
|
||
- echo "前端编译完成 -> dist-test"
|
||
|
||
- name: deploy-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 "=== [测试环境] 部署后端 ==="
|
||
- cp -r /root/aiedu/backend/app/* /root/aiedu/kaopeilian-backend/app/
|
||
- docker restart kpl-backend-dev
|
||
- sleep 5
|
||
- docker ps | grep kpl-
|
||
- echo "=== 测试环境部署完成: https://kpl.ireborn.com.cn ==="
|
||
|
||
---
|
||
kind: pipeline
|
||
type: docker
|
||
name: deploy-staging
|
||
|
||
# 预生产环境:staging 分支触发,部署到 aiedu
|
||
trigger:
|
||
branch:
|
||
- staging
|
||
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 "=== [预生产] 同步代码 ==="
|
||
- cd /root/aiedu
|
||
- git fetch cicd
|
||
- git checkout staging 2>/dev/null || git checkout -b staging cicd/staging
|
||
- git reset --hard cicd/staging
|
||
- echo "代码同步完成"
|
||
|
||
- name: build-frontend-staging
|
||
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 "=== [预生产] 编译前端到 dist-staging ==="
|
||
- cd /root/aiedu/frontend
|
||
- npm install --silent
|
||
- npm run build
|
||
- rm -rf /root/aiedu/dist-staging/*
|
||
- cp -r dist/* /root/aiedu/dist-staging/
|
||
- echo "前端编译完成 -> dist-staging"
|
||
|
||
- name: deploy-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 "=== [预生产] 部署后端 ==="
|
||
- cp -r /root/aiedu/backend/app/* /root/aiedu/kaopeilian-backend/app/
|
||
- docker restart kaopeilian-backend
|
||
- sleep 5
|
||
- docker ps | grep kaopeilian-
|
||
- echo "=== 预生产部署完成: 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 cicd
|
||
- git reset --hard cicd/main
|
||
- echo "代码同步完成"
|
||
|
||
- name: build-frontend-prod
|
||
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 "=== [生产] 编译前端到 dist-prod ==="
|
||
- cd /root/aiedu/frontend
|
||
- npm install --silent
|
||
- npm run build
|
||
- rm -rf /root/aiedu/dist-prod/*
|
||
- cp -r dist/* /root/aiedu/dist-prod/
|
||
- echo "前端编译完成 -> dist-prod,所有生产租户已更新"
|
||
|
||
- name: deploy-backend
|
||
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 "=== [生产] 部署后端 ==="
|
||
- |
|
||
# 同步后端代码到共享目录
|
||
cp -r /root/aiedu/backend/app/* /root/aiedu/kaopeilian-backend/app/
|
||
echo "后端代码已同步到共享目录"
|
||
|
||
# 获取 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
|
||
|
||
# 重启指定租户的后端容器
|
||
for t in $TENANTS; do
|
||
echo "重启 ${t}-backend ..."
|
||
docker restart ${t}-backend || echo "警告: ${t}-backend 不存在或重启失败"
|
||
done
|
||
|
||
sleep 10
|
||
docker ps | grep backend
|
||
echo "=== [生产] 部署完成 ==="
|
||
echo "已更新租户: $TENANTS"
|
||
|
||
---
|
||
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"
|