你可以使用版本提升发布功能,按构建版本号将代码发布到目标环境,例如,将构建版本号 42 推广到生产环境。下面是使用版本提升发布功能的一些好处。
- 创建可重复的部署
- 创建一个审计跟踪
- 减少人为错误
- 分离职责
- 撤销开发人员对服务器环境的访问
工作原理
当你发布一个版本提升构建时,Drone
会创建一个新的构建(有一个新的构建编号),它的值继承自被提升的构建。这个新的构建将有一个事件类型被设置为 promote。你可以在你的流水线配置中引用该事件类型和目标环境。
当 Drone
执行你的构建时,默认情况下,它会执行你的 yaml
中定义的所有流水线 (Pipeline
) 和所有步骤 (Steps
)。你可以根据事件和目标环境来限制流水线和步骤的执行。
-
按目标环境限制流水线的执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
kind: pipeline type: docker name: default steps: - name: test image: node commands: - npm install - npm run test - npm run bundle - name: deploy image: plugins/ssh settings: ... trigger: event: - promote target: - production
-
按目标环境限制流水线步骤的执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
kind: pipeline type: docker name: deploy steps: - name: test image: node commands: - npm install - npm run test - npm run bundle - name: deploy image: plugins/ssh settings: ... when: event: - promote target: - production
-
为版本提升发布活动创建单独的流水线:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
kind: pipeline type: docker name: build steps: - name: test image: node commands: - npm install - npm run test trigger: event: - push - pull_request --- kind: pipeline type: docker name: deploy steps: - name: test image: node commands: - npm install - npm run test - npm run bundle - name: deploy image: plugins/ssh settings: ... trigger: event: - promote target: - production
如何发布提升版本
你可以使用命令行工具触发版本提升发布的构建。
-
使用 build promote 命令:
1
drone build promote <repo> <number> <environment>
-
将第 42 个构建版本的构建物(制品)发布到
staging
环境(暂存/中转区)的示例:1
drone build promote octocat/hello-world 42 staging
-
将第 42 个构建版本的构建物(制品)发布到
production
环境(生产环境)的示例:1
drone build promote octocat/hello-world 42 production
在上面的例子中,我们参考了 staging
和 production
环境,然而,environment
是一个自由字段。你可以使用任何环境 (environment
) 名称。