kind: pipeline type: docker name: app-manager-prod volumes: # 声明数据卷 - name: targetDir host: path: /app-manager clone: disable: false # 启用代码拉取 steps: - name: build-project image: mcr.microsoft.com/dotnet/sdk:7.0 pull: if-not-exists depends_on: [clone] # 依赖的步骤 volumes: # 挂载数据卷 - name: targetDir path: /drone/src/dist/ commands: # 执行命令 - echo '' > ~/.nuget/NuGet/NuGet.Config - echo '' > ~/.nuget/NuGet/NuGet.Config - rm -rf /drone/src/dist/* - dotnet publish -c release -o ./publish -r linux-x64 - cp -r ./publish/* /drone/src/dist # 复制文件 when: status: - success # 当前步骤成功时执行 - name: scp-project image: appleboy/drone-scp pull: if-not-exists depends_on: [build-project] # 依赖的步骤 volumes: # 挂载数据卷 - name: targetDir # 数据卷名称 path: /app-manager # 容器内目录 绝对路径 settings: host: from_secret: app-manager-host-a username: from_secret: username password: from_secret: userpwd port: 22 command_timeout: 2m target: /home/ABServer/deploy-ready/ source: - echo ====开始拷贝======= - /app-manager/* - echo ====结束拷贝======= when: status: - success # 当前步骤成功时执行 - name: deploy-project image: appleboy/drone-ssh pull: if-not-exists depends_on: [scp-project] # 依赖的步骤 settings: host: from_secret: app-manager-host-a username: from_secret: username password: from_secret: userpwd port: 22 command_timeout: 2m script: - echo ====备份线上文件======= - cp -r /home/ABServer/webroot/app-manager /home/ABServer/deploy-bak/ - echo ====开始部署======= - cd /home/ABServer/ - cp -r /home/ABServer/deploy-ready/app-manager /home/ABServer/webroot/ - docker restart app-manager - echo ====等待容器启动======= - sleep 10 # 等待容器启动 - echo ====部署成功======= when: status: - success # 当前步骤成功时执行 - name: scp-project-b image: appleboy/drone-scp pull: if-not-exists depends_on: [deploy-project] # 依赖的步骤 volumes: # 挂载数据卷 - name: targetDir # 数据卷名称 path: /app-manager # 容器内目录 绝对路径 settings: host: from_secret: app-manager-host-b username: from_secret: username password: from_secret: userpwd port: 22 command_timeout: 10m target: /home/ABServer/deploy-ready/ source: - echo ====开始拷贝======= - /app-manager/* - echo ====结束拷贝======= when: status: - success # 当前步骤成功时执行 - name: deploy-project-b image: appleboy/drone-ssh pull: if-not-exists depends_on: [scp-project-b] # 依赖的步骤 settings: host: from_secret: app-manager-host-b username: from_secret: username password: from_secret: userpwd port: 22 command_timeout: 10m script: - echo ====备份线上文件======= - cp -r /home/ABServer/webroot/app-manager /home/ABServer/deploy-bak/app-manager - echo ====开始部署======= - cd /home/ABServer/ - cp -r /home/ABServer/deploy-ready/app-manager /home/ABServer/webroot/ - docker restart app-manager # - docker restart nodeServer1 - echo ====部署成功======= when: status: - success # 当前步骤成功时执行 trigger: branch: - release-app-manager event: - push #排除合并请求 exclude: - ref: refs/pull/*