kind: pipeline type: docker name: build-and-deploy trigger: branch: - main - develop event: - push steps: # 构建后端镜像 - name: build-backend image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock commands: - docker build -t ai-interview-backend:${DRONE_COMMIT_SHA:0:8} -f deploy/Dockerfile.backend . - docker tag ai-interview-backend:${DRONE_COMMIT_SHA:0:8} ai-interview-backend:latest # 构建前端镜像 - name: build-frontend image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock commands: - docker build -t ai-interview-frontend:${DRONE_COMMIT_SHA:0:8} -f deploy/Dockerfile.frontend . - docker tag ai-interview-frontend:${DRONE_COMMIT_SHA:0:8} ai-interview-frontend:latest # 部署到测试环境 (develop 分支) - name: deploy-test image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock environment: COZE_PAT_TOKEN: from_secret: coze_pat_token COZE_BOT_ID: from_secret: coze_bot_id COZE_WORKFLOW_A_ID: from_secret: coze_workflow_a_id COZE_WORKFLOW_C_ID: from_secret: coze_workflow_c_id FILE_SERVER_URL: from_secret: file_server_url FILE_SERVER_TOKEN: from_secret: file_server_token commands: - docker stop ai-interview-backend-test ai-interview-frontend-test || true - docker rm ai-interview-backend-test ai-interview-frontend-test || true - docker run -d --name ai-interview-backend-test -p 8000:8000 --restart unless-stopped -e COZE_PAT_TOKEN=$COZE_PAT_TOKEN -e COZE_BOT_ID=$COZE_BOT_ID -e COZE_WORKFLOW_A_ID=$COZE_WORKFLOW_A_ID -e COZE_WORKFLOW_C_ID=$COZE_WORKFLOW_C_ID -e FILE_SERVER_URL=$FILE_SERVER_URL -e FILE_SERVER_TOKEN=$FILE_SERVER_TOKEN ai-interview-backend:latest - docker run -d --name ai-interview-frontend-test -p 3000:80 --restart unless-stopped ai-interview-frontend:latest when: branch: - develop # 部署到正式环境 (main 分支) - name: deploy-prod image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock environment: COZE_PAT_TOKEN: from_secret: coze_pat_token COZE_BOT_ID: from_secret: coze_bot_id COZE_WORKFLOW_A_ID: from_secret: coze_workflow_a_id COZE_WORKFLOW_C_ID: from_secret: coze_workflow_c_id FILE_SERVER_URL: from_secret: file_server_url FILE_SERVER_TOKEN: from_secret: file_server_token commands: - docker stop ai-interview-backend-prod ai-interview-frontend-prod || true - docker rm ai-interview-backend-prod ai-interview-frontend-prod || true - docker run -d --name ai-interview-backend-prod -p 9000:8000 --restart unless-stopped -e COZE_PAT_TOKEN=$COZE_PAT_TOKEN -e COZE_BOT_ID=$COZE_BOT_ID -e COZE_WORKFLOW_A_ID=$COZE_WORKFLOW_A_ID -e COZE_WORKFLOW_C_ID=$COZE_WORKFLOW_C_ID -e FILE_SERVER_URL=$FILE_SERVER_URL -e FILE_SERVER_TOKEN=$FILE_SERVER_TOKEN ai-interview-backend:latest - docker run -d --name ai-interview-frontend-prod -p 4000:80 --restart unless-stopped ai-interview-frontend:latest when: branch: - main volumes: - name: docker-sock host: path: /var/run/docker.sock