From 28baed1cad9a8eff50aab40eb7a1638ecf6162e3 Mon Sep 17 00:00:00 2001 From: Admin Date: Tue, 3 Feb 2026 17:15:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=94=B9=E9=80=A0=20CI/CD=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=98=BF=E9=87=8C=E4=BA=91=20ACR=20=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .drone.yml | 118 ++++++++++++++++++++++------------------------------- 1 file changed, 48 insertions(+), 70 deletions(-) diff --git a/.drone.yml b/.drone.yml index 0980139..8b29da3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ kind: pipeline type: docker -name: build-and-deploy +name: build-and-push trigger: branch: @@ -10,88 +10,66 @@ trigger: - push steps: - # 构建后端镜像 - - name: build-backend - image: docker:dind - volumes: - - name: docker-sock - path: /var/run/docker.sock - commands: - - docker build -t platform-backend:${DRONE_COMMIT_SHA:0:8} -f deploy/Dockerfile.backend . - - docker tag platform-backend:${DRONE_COMMIT_SHA:0:8} platform-backend:latest - - # 构建前端镜像(测试环境) - - name: build-frontend-test - image: docker:dind - volumes: - - name: docker-sock - path: /var/run/docker.sock - commands: - - docker build -t platform-frontend-test:${DRONE_COMMIT_SHA:0:8} -f deploy/Dockerfile.frontend --build-arg BACKEND_HOST=platform-backend-test . - - docker tag platform-frontend-test:${DRONE_COMMIT_SHA:0:8} platform-frontend-test:latest - when: - branch: - - develop - - # 构建前端镜像(生产环境) - - name: build-frontend-prod - image: docker:dind - volumes: - - name: docker-sock - path: /var/run/docker.sock - commands: - - docker build -t platform-frontend-prod:${DRONE_COMMIT_SHA:0:8} -f deploy/Dockerfile.frontend --build-arg BACKEND_HOST=platform-backend-prod . - - docker tag platform-frontend-prod:${DRONE_COMMIT_SHA:0:8} platform-frontend-prod:latest - when: - branch: - - main - - # 部署测试环境 - - name: deploy-test + # 构建并推送后端镜像 + - name: build-push-backend image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock environment: - DATABASE_URL: - from_secret: database_url - API_KEY: - from_secret: api_key - JWT_SECRET: - from_secret: jwt_secret - CONFIG_ENCRYPT_KEY: - from_secret: config_encrypt_key + DOCKER_REGISTRY: + from_secret: docker_registry + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password commands: - - docker network create platform-network 2>/dev/null || true - - docker stop platform-backend-test platform-frontend-test || true - - docker rm platform-backend-test platform-frontend-test || true - - docker run -d --name platform-backend-test --network platform-network -p 8001:8000 --restart unless-stopped -e DATABASE_URL=$DATABASE_URL -e API_KEY=$API_KEY -e JWT_SECRET=$JWT_SECRET -e CONFIG_ENCRYPT_KEY=$CONFIG_ENCRYPT_KEY platform-backend:latest - - docker run -d --name platform-frontend-test --network platform-network -p 3003:80 --restart unless-stopped platform-frontend-test:latest - when: - branch: - - develop + - echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin + - docker build -t $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_BRANCH} -f deploy/Dockerfile.backend . + - docker tag $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_BRANCH} $DOCKER_REGISTRY/ireborn/platform-backend:latest + - docker tag $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_BRANCH} $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_COMMIT_SHA:0:8} + - docker push $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_BRANCH} + - docker push $DOCKER_REGISTRY/ireborn/platform-backend:latest + - docker push $DOCKER_REGISTRY/ireborn/platform-backend:${DRONE_COMMIT_SHA:0:8} - # 部署生产环境(使用独立的生产数据库) - - name: deploy-prod + # 构建并推送前端镜像(测试环境) + - name: build-push-frontend-test image: docker:dind volumes: - name: docker-sock path: /var/run/docker.sock environment: - DATABASE_URL: - from_secret: database_url_prod - API_KEY: - from_secret: api_key - JWT_SECRET: - from_secret: jwt_secret - CONFIG_ENCRYPT_KEY: - from_secret: config_encrypt_key + DOCKER_REGISTRY: + from_secret: docker_registry + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password commands: - - docker network create platform-network-prod 2>/dev/null || true - - docker stop platform-backend-prod platform-frontend-prod || true - - docker rm platform-backend-prod platform-frontend-prod || true - - docker run -d --name platform-backend-prod --network platform-network-prod -p 9001:8000 --restart unless-stopped -e DATABASE_URL=$DATABASE_URL -e API_KEY=$API_KEY -e JWT_SECRET=$JWT_SECRET -e CONFIG_ENCRYPT_KEY=$CONFIG_ENCRYPT_KEY platform-backend:latest - - docker run -d --name platform-frontend-prod --network platform-network-prod -p 4003:80 --restart unless-stopped platform-frontend-prod:latest + - echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin + - docker build -t $DOCKER_REGISTRY/ireborn/platform-frontend:develop -f deploy/Dockerfile.frontend --build-arg BACKEND_HOST=platform-backend-test . + - docker push $DOCKER_REGISTRY/ireborn/platform-frontend:develop + when: + branch: + - develop + + # 构建并推送前端镜像(生产环境) + - name: build-push-frontend-prod + image: docker:dind + volumes: + - name: docker-sock + path: /var/run/docker.sock + environment: + DOCKER_REGISTRY: + from_secret: docker_registry + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + commands: + - echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin + - docker build -t $DOCKER_REGISTRY/ireborn/platform-frontend:main -f deploy/Dockerfile.frontend --build-arg BACKEND_HOST=platform-backend-prod . + - docker push $DOCKER_REGISTRY/ireborn/platform-frontend:main when: branch: - main