Files
012-kaopeilian/.drone.yml
111 e49b75e483
Some checks failed
continuous-integration/drone/push Build is failing
fix: 使用本地Docker构建方式,无需远程镜像仓库
- 改为挂载 docker.sock 本地构建
- 删除 docker_username/password secrets
- 添加 database_url, redis_* secrets
- 与其他项目配置方式保持一致
2026-01-24 19:38:01 +08:00

103 lines
2.8 KiB
YAML

kind: pipeline
type: docker
name: build-and-deploy
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-backend-test:8000 .
- 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 "=== 考培练系统测试环境部署完成 ==="
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"