Files
012-kaopeilian/.drone.yml
111 c38e6fabb6
Some checks failed
continuous-integration/drone/push Build encountered an error
feat: 添加生产环境批量部署流程
- test 分支:部署到测试环境 (kaopeilian.test.ai.ireborn.com.cn)
- main 分支:批量更新所有生产租户 (hua/yy/hl/xy/fw/ex)
- 前端一次编译,6个租户共享
- 后端批量重建容器
2026-01-27 10:08:43 +08:00

169 lines
4.5 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-test
# 测试环境test 分支触发
trigger:
branch:
- test
event:
- push
steps:
- name: build-backend
image: docker:dind
volumes:
- name: docker-sock
path: /var/run/docker.sock
commands:
- cd backend
- docker build -t kaopeilian-backend:${DRONE_COMMIT_SHA:0:8} -f Dockerfile .
- docker tag kaopeilian-backend:${DRONE_COMMIT_SHA:0:8} kaopeilian-backend:test
- name: build-frontend
image: docker:dind
volumes:
- name: docker-sock
path: /var/run/docker.sock
commands:
- cd frontend
- docker build -t kaopeilian-frontend:${DRONE_COMMIT_SHA:0:8} -f Dockerfile --build-arg VITE_API_BASE_URL=http://kaopeilian.test.ai.ireborn.com.cn .
- docker tag kaopeilian-frontend:${DRONE_COMMIT_SHA:0:8} kaopeilian-frontend:test
- name: deploy-test
image: docker:dind
volumes:
- name: docker-sock
path: /var/run/docker.sock
environment:
DATABASE_URL:
from_secret: database_url
REDIS_HOST:
from_secret: redis_host
REDIS_PORT:
from_secret: redis_port
REDIS_PASSWORD:
from_secret: redis_password
commands:
- docker network create kaopeilian-network 2>/dev/null || true
- docker stop kaopeilian-backend-test kaopeilian-frontend-test 2>/dev/null || true
- docker rm kaopeilian-backend-test kaopeilian-frontend-test 2>/dev/null || true
- |
docker run -d \
--name kaopeilian-backend-test \
--network kaopeilian-network \
-p 18000:8000 \
--restart unless-stopped \
-e DATABASE_URL=$DATABASE_URL \
-e REDIS_HOST=$REDIS_HOST \
-e REDIS_PORT=$REDIS_PORT \
-e REDIS_PASSWORD=$REDIS_PASSWORD \
kaopeilian-backend:test
- |
docker run -d \
--name kaopeilian-frontend-test \
--network kaopeilian-network \
-p 13001:80 \
--restart unless-stopped \
kaopeilian-frontend:test
- docker ps | grep kaopeilian
- echo "=== 测试环境部署完成: http://kaopeilian.test.ai.ireborn.com.cn ==="
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: deploy-prod
# 生产环境main 分支触发,批量更新所有租户
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: rebuild-backends
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
- docker-compose -f docker-compose.prod-multi.yml up -d --build --no-deps hua-backend yy-backend hl-backend xy-backend fw-backend ex-backend
- sleep 10
- docker ps | grep backend
- echo "=== 生产环境批量更新完成 ==="
- echo "租户列表: hua, yy, hl, xy, fw, ex"
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"