# 第 98 次部署 steps: - name: Java 构建 image: library/maven:3.9.6-eclipse-temurin-17 pull: true commands: - mvn clean package -DskipTests volumes: - /tmp/maven-cache:/root/.m2 when: event: [push, pull_request] branch: master - name: 构建与推送 image: docker.m.daocloud.io/woodpeckerci/plugin-docker-buildx:latest-insecure privileged: true volumes: - /var/run/docker.sock:/var/run/docker.sock settings: repo: push.lovestory.cyou/abhors/demo registry: push.lovestory.cyou username: from_secret: nexus_docker_username password: from_secret: nexus_docker_password mirror: https://registry.lovestory.cyou when: event: push branch: master # # - name: 调试-查看工作目录文件 # image: alpine:latest # 使用一个轻量级的 Linux 镜像 # commands: # 普通步骤,使用 commands # - pwd # 打印当前目录 # - ls -la # 列出所有文件 # - find . -name "*.yml" # 查找所有 .yml 文件 # when: # event: push # branch: master # ============ 新增步骤 1:上传 docker-compose.yml ============ - name: 上传编排文件 image: registry.lovestory.cyou/appleboy/drone-scp:latest # 官方镜像,也可换成你的私有源 settings: host: 43.143.243.136 port: 22 username: from_secret: 136_ssh_user password: from_secret: 136_ssh_password # 要上传的本地文件(相对于工作空间根目录) source: - ./docker-compose.yml # 远程服务器目标目录(如果不存在会自动创建) target: /opt/demo-app # 自动创建目标目录 mkdir: true # 覆盖已有文件 overwrite: true when: event: push branch: master # ============ 修改步骤 2:执行远程 SSH 命令重启 ============ - name: 远程执行部署 image: registry.lovestory.cyou/appleboy/drone-ssh:latest environment: NEXUS_DOCKER_USERNAME: from_secret: nexus_docker_username NEXUS_DOCKER_PASSWORD: from_secret: nexus_docker_password settings: host: 43.143.243.136 port: 22 username: from_secret: 136_ssh_user password: from_secret: 136_ssh_password secrets: [ nexus_docker_username, nexus_docker_password ] envs: - NEXUS_DOCKER_USERNAME - NEXUS_DOCKER_PASSWORD script: - echo "=========================================" - echo "🚀 开始部署节点:43.143.243.136" - echo "=========================================" # 1. 进入编排文件所在目录 - cd /opt/demo-app # 2. 登录私有镜像仓库 - docker login --username "${NEXUS_DOCKER_USERNAME}" --password "${NEXUS_DOCKER_PASSWORD}" push.lovestory.cyou # 3. 拉取最新镜像(compose up 会自动拉取,但单独拉取便于查看进度) - docker compose pull # 4. 优雅地重启服务(推荐,替代之前的手动 stop/rm/run) # --remove-orphans 会移除 Compose 文件中未定义的旧容器 - docker compose up -d --remove-orphans # 5. 清理未被使用的旧镜像和缓存,释放磁盘空间 - docker image prune -f when: event: push branch: master