触发规则
功能介绍
在持续集成计划的配置过程中,你可以按需设置构建计划运行的触发规则,触发规则中包含了构建计划运行的频率与触发的条件。每一个持续集成的构建计划,都会支持以下几种触发方式:
- 手动触发
- 代码源触发
- 定时触发
- API 触发
上述的多种触发方式可以同时使用。
手动触发
你可以主动触发一个构建计划,手动触发时,可输入对应的构建参数,构建参数将以环境变量的形式加入到构建环境中。
在构建计划页面,点击【立即构建】,在弹框中按需选择构建目标(标签、分支、修订版本),输入需要的构建参数完成触发构建。
代码源触发
配置了代码源触发的构建计划,会自动监听本构建计划中所选择的代码仓库,根据其变化来自动触发构建计划。
代码更新
若选择了「代码更新时自动执行」,却未指定任何代码源规则,则任何代码提交均会触发流水线。
如需设置精细化的构建触发条件,可通过组合规则进行约束。多个规则之间为「and」的关系,同时满足才会触发构建。目前持续集成提供以下类型代码提交触发规则:
包含代码分支或标签:只有指定代码分支或标签更新代码时,才会触发构建。
排除代码分支或标签:除指定代码分支或标签以外的情况更新代码时,才会触发构建。
包含文件路径:只有指定文件路径更新代码时,才会触发构建。
排除文件路径:除指定文件路径以外的路径更新代码时,才会触发构建。
包含创建人:只有指定成员更新代码时,才会触发构建。
排除创建人:除指定成员以外的成员更新代码时,才会触发构建。
其中,指定代码分支或标签支持正则匹配 ref 全称或者简称:
如 refs/heads/master 和 master 都能匹配 master 分支触发;
如希望 master 和 dev 更新时才触发构建可使用: ^refs/heads/(master|dev)。
合并请求
通过合并请求触发持续集成可以模拟源分支合并入目标分支后可能发生的场景,尽早暴露问题。你可以选择在何种情况下的合并请求会执行构建:
- 发起合并请求时触发
- 归并合并请求时触发
- 合并请求的源分支发生变更
意味着持续集成任务将监听源分支的变动情况。假设一个合并请求的源分支是issue/new
分支,那么构建计划将监听issue/new
分支,有新的代码提交时将自动触发持续集成任务。 - 自动取消相同合并请求
- 合并请求的目标分支发生变更
意味着持续集成任务将监听目标分支的变动情况。假设一个合并请求的目标分支为master
分支,那么构建计划将监听master
分支,代码发生变更时将会自动触发持续集成任务。
若勾选了上述配置,却未指定任何代码源规则,则任何合并请求均会触发流水线。
如需设置精细化的构建触发条件,可通过组合规则进行约束。多个规则之间为「and」的关系,同时满足才会触发构建。目前持续集成提供以下类型合并请求触发规则:
包含代码分支:包含指定代码分支(支持正则表达式匹配)的合并请求才会触发构建。
排除代码分支:除指定代码分支以外的合并请求才会触发构建。
包含文件路径:合并请求中包含指定文件路径时,才会触发构建。
排除文件路径:除指定文件路径外的合并请求才会触发构建。
包含创建人:来自指定成员的合并请求才会触发构建。
排除创建人:来自除指定成员以外的成员的合并请求才会触发构建。
自动取消相同构建
你可以在设置中勾选是否取消「自动取消相同版本号」以及「自动取消相同合并请求」所触发的构建(仅保留最新一个)。
GitLab 私有云
绑定 GitLab 私有云时,会自动创建 GitLab Webhook,后续事件自动通知 CODING,然后匹配上述触发规则设置。
定时触发
通过给构建计划添加定时触发配置,你可以周期性或在某个具体的时间点,自动触发一个构建计划,产生一个具体的构建任务。
你可以为一个构建计划添加多个定时触发,没有前后优先级之分,多个定时触发有时间重合的,依然会触发多次构建。
触发条件:代码无变化时不重复触发定时任务
若选中分支代码与上次触发对比无变化,即使到达触发时间,也不会触发构建。
日期选择
你可以选择选择一周内的多个日期。
周期触发
你可以选定 00:00 - 24:00 之间的任意时间为周期(精确到小时),按照选中的间隔触发任务。
单次触发
你可以在 00:00 - 24:00 之间选择任意时间为触发时间点(精确到分钟)。
API 触发
在使用此项功能之前,请确保你已经在【项目设置】->【开发者选项】->【项目令牌】->【新建令牌】中生成了具备持续集成 API 触发权限的令牌。
生成具备相应权限的令牌后便能够调用构建计划中的 API 触发接口。点击生成 curl 命令触发示例后即可生成相应的调用命令。
API 说明
项目令牌调用 CODING 持续集成 API 时所使用的认证方式为Basic Auth
,下面是关于 API 接口的详细信息和相关参数。
触发构建任务
POST https://< TEAM_GK >.coding.net/api/cci/job/< JOB_ID >/trigger
请求 body
{
"ref": "master",
"envs": [
{
"name": "my-params-1",
"value": "hello",
"sensitive": 1
},
{
"name": "my-params-2",
"value": "world",
"sensitive": 0
}
]
}
返回 body
{
"code": 0
}
参数说明
参数名字 | 参数位置 | 是否必填 | 类型 | 默认值 | 说明 |
---|---|---|---|---|---|
ref | body | 否 | string | master | 构建目标的 ref ( commit sha / tag / branch ),若构建计划不使用代码仓库可以忽略 |
envs | body | 否 | env[] | - | 构建计划的启动参数 |
envItem
参数名字 | 参数位置 | 是否必填 | 类型 | 默认值 | 说明 |
---|---|---|---|---|---|
name | envItem.name | 是 | string | master | 构建计划的启动参数的名称 |
value | envItem.value | 否 | string | - | 构建计划的启动值 |
sensitive | envItem.sensitive | 否 | number | 0 | 是否将启动参数设置为保密,设置保密后日志中不可见。 1 为保密,0 为明文 |
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。