kind: pipeline type: docker name: springboot-deploy trigger: branch: - main # 只在 main 分支有推送时触发 # - master # 或者 master 分支 event: - push platform: os: linux arch: amd64 steps: - name: build-and-test image: registry.zczx.com/zcmaven17 volumes: # (可选) 缓存 Maven 依赖以加速后续构建 - name: maven-cache path: /root/.m2 commands: - mvn clean package -DskipTests # 构建 JAR 包,跳过测试以加快此步骤 (也可以运行 mvn test) # 如果需要运行测试: # - mvn clean test # - mvn package - name: debug-docker-pull image: docker:cli commands: - docker --version - docker pull registry.zczx.com/ibm-semeru-runtimes:open-21-jre when: branch: main - name: build-and-publish-to-private-registry image: plugins/docker settings: debug: true repo: registry.zczx.com/dronedemo tags: - latest - ${DRONE_COMMIT_SHA:0:7} dockerfile: Dockerfile context: . environment: DOCKER_BUILDKIT: '0' when: branch: - main event: - push - name: deploy-to-server image: appleboy/drone-ssh # 使用 SSH 插件 settings: host: from_secret: 10.0.0.210 username: from_secret: root key: from_secret: ssh_private_key # SSH 私钥内容 port: 22 # SSH 端口,默认为 22 # passhprase: from_secret: ssh_passphrase # 如果你的 SSH key 有密码 script: - cd /root/deploy/dronedemo # 进入应用部署目录 - echo "Pulling latest image..." - docker-compose pull - echo "Stopping and removing old container if exists..." - docker-compose down # 停止并移除旧的容器 (如果正在运行) - echo "Starting new container..." - docker-compose up -d - echo "Deployment complete. Cleaning up unused images..." - docker image prune -f # 清理悬空镜像 (可选) when: branch: - main event: - push # (可选) 定义卷用于缓存,例如 Maven 依赖 # volumes: # - name: maven-cache # host: # path: /tmp/cache/maven # 将 Runner 主机上的目录挂载到构建步骤中