Some checks failed
continuous-integration/drone/push Build encountered an error
- test 分支:部署到测试环境 (kaopeilian.test.ai.ireborn.com.cn) - main 分支:批量更新所有生产租户 (hua/yy/hl/xy/fw/ex) - 前端一次编译,6个租户共享 - 后端批量重建容器
169 lines
4.5 KiB
YAML
169 lines
4.5 KiB
YAML
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"
|