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.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 "=== 考培练系统测试环境部署完成 ===" 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"