自定义部署流程
云原生构建支持自定义部署流程,通过自定义部署环境、审批流程、部署流水线,实现自动化的部署流程。
操作示例:

自定义部署环境
在仓库根目录下添加 .cnb/tag_deploy.yml 文件用于配置部署环境。
如下示例中定义了 development、staging、production 三种环境,用户可在页面上选择需要部署的环境类型。
| |
name: 必填,环境名,需唯一。例如name: development,点击该环境对应的部署按钮,将触发.cnb.yml中的tag_deploy.development事件流水线description: 选填,环境描述env: 选填,传给部署流水线的环境变量。用户可根据需要传入需要的环境变量。button: 选填,对象数组格式,自定义按钮。点击按钮可触发云原生构建流水线,执行参数 event 对应的事件。name: 必填,按钮名。description: 选填,按钮描述。如存在,则将作为流水线 title,否则流水线使用默认 title。event: 必填,自定义事件,仅支持 web_trigger 事件。env: 选填,传给 web_trigger 流水线的环境变量,可继承上一级别环境变量,优先级高于上一级别环境变量。permissions: 选填,权限控制,满足users或roles其中之一即有权限触发构建(还需要有仓库写权限)。如果未配置permissions,则有仓库写权限即可出发构建users: 选填,Array<String>,用户名数组。可定义多个。roles: 选填,Array<String>,仓库角色数组。可定义多种仓库角色。owner(负责人)、master(管理员Administrator)、developer(开发者)、reporter(助手)、guest(访客)
deploy: 选填,对象数组格式,自定义部署按钮。点击按钮可触发云原生构建流水线,执行部署事件(tag_deploy.*)。name: 必填,按钮名。description: 选填,按钮描述。env: 选填,传给部署流水线的环境变量,优先级高于上一级 env。
require: 选填,对象数组格式。部署的前置条件,需满足了前置条件(部署环境要求、元数据要求、审批流程)才可进行部署操作。1、部署环境要求的参数包括
environmentName: 必填。环境名。after: 选填。时间,单位 s(秒)。表示environmentName的环境部署成功后 after 时间后才算满足前置条件。description: 选填。require的描述信息,附注用户理解require要求的内容。button: 选填。自定义按钮,点击可触发执行 event 传入的事件。可定义与 require 信息有关的按钮事件,注意:当 require 满足条件后隐藏按钮。name: 必填,按钮名。event: 必填,自定义事件,仅支持web_trigger_*事件。description: 选填,按钮描述。如存在,则将作为流水线 title,否则流水线使用默认 title。env: 选填,传给 web_trigger 流水线的环境变量,可继承上一级别环境变量,优先级高于上一级别环境变量。permissions: 选填,权限控制,满足users或roles其中之一即有权限触发构建(还需要有仓库写权限)。如果未配置permissions,则有仓库写权限即可出发构建users: 选填,Array<String>,用户名数组。可定义多个。roles: 选填,Array<String>,仓库角色数组。可定义多种仓库角色。owner(负责人)、master(管理员Administrator)、developer(开发者)、reporter(助手)、guest(访客)
2、元数据要求的参数包括
annotation: 必填。元数据的key值。expect: 选填。对元数据的value值的要求。对象格式,支持eq、ne、gt、lt、gte、lte、and、or、reg操作符。eq: 等于ne: 不等于gt: 大于lt: 小于gte: 大于等于lte: 小于等于and: 与or: 或reg: 能和正则表达式匹配
description: 选填。require的描述信息,附注用户理解require要求的内容。button: 选填。自定义按钮,点击可触发执行 event 传入的事件。可定义与 require 信息有关的按钮事件,注意:当 require 满足条件后隐藏按钮。name: 必填,按钮名。description: 选填,按钮描述。如存在,则将作为流水线 title,否则流水线使用默认 title。event: 必填,自定义事件,仅支持 web_trigger 事件。env: 选填,传给 web_trigger 流水线的环境变量,可继承上一级别环境变量,优先级高于上一级别环境变量。permissions: 选填,权限控制,满足users或roles其中之一即有权限触发构建(还需要有仓库写权限)。如果未配置permissions,则有仓库写权限即可出发构建users: 选填,Array<String>,用户名数组。可定义多个。roles: 选填,Array<String>,仓库角色数组。可定义多种仓库角色。owner(负责人)、master(管理员Administrator)、developer(开发者)、reporter(助手)、guest(访客)
3、审批流程要求的参数包括
approver: 必填,审批人定义,满足users或role的审批人中,一人审批通过即可。users: 用户名数组。可定义多个审批人。roles: 仓库角色数组。可定义多种仓库角色。owner(负责人)、master(管理员Administrator)、developer(开发者)、reporter(助手)、guest(访客)
title: 选填,审批标题,如测试审批。
自定义部署前置条件
对于每个环境可定义部署前置条件,只有满足所有前置条件才可进行部署操作。可定义如下三种前置条件:
- 环境部署要求:要求指定环境已经部署成功,且满足
after部署成功时间要求 - 元数据值要求:要求指定元数据对应的值是否满足要求
- 审批流程要求:可自定义审批流程指定审批人,并进行审批操作,当全部审批流程都审批通过后,才算满足要求
环境部署前置条件示例
| |
元数据前置条件示例
| |
审批流程前置条件示例
可自定义审批流程和指定审批人。有权限的审批人可进行审批操作(同意、拒绝)。全部流程审批通过后,即算满足要求
| |
自定义部署流水线
如下示例定义了三种环境的部署事件流水线,
当在页面中选择部署 development 环境时,则触发 tag_deploy.development 事件。
流水线基于当前 tag 对应的代码进行部署操作。
| |
示例中的流水线事件名和部署环境类型对应关系如下:
tag_deploy.development:developmenttag_deploy.staging:stagingtag_deploy.production:production
自定义按钮触发的 web_trigger 事件
tag_deploy.yml 中的自定义按钮,仅支持触发 web_trigger事件 事件。
如下流水线配置中,web_trigger_annotation 事件执行时,会进行上传元数据操作。
| |
部署权限说明
需有 仓库写权限 且有 推送 Tag 权限的用户才能进行部署操作。