960 字约 3 分钟
cnb:apply
触发当前仓库的自定义事件流水线。
适用事件
pushcommit.addbranch.createpull_request.targetpull_request.mergeabletag_pushpull_request.mergedapi_triggerweb_triggercrontabtag_deploy
参数
以下列表先概览 cnb:apply 的全部参数。
- config:完整的内联 CI 配置文件内容
- configFrom:指定一个本地文件作为配置文件
- event:要执行的自定义事件名(默认
api_trigger) - sync:是否同步执行,等待子流水线执行成功
- continueOnBuildError:同步模式下子流水线失败是否继续执行
- title:自定义子流水线标题
各参数详细说明如下。
config
- type:
String - required:
false
完整的 CI 配置文件内容。
configFrom
- type:
String - required:
false
指定一个本地文件作为配置文件。
event
- type:
String - required:
false - default:
api_trigger
要执行的自定义事件名,必须为 api_trigger 或以 api_trigger_ 开头。
sync
- type:
Boolean - required:
false - default:
false是否同步执行。
同步模式下会等待本次 apply 流水线执行成功,再执行下一个任务。
continueOnBuildError
- type:
Boolean - required:
false - default:
false
同步模式下,触发的流水线构建失败时,是否继续执行下个任务。
title
- type:
String - required:
false
自定义流水线标题
环境变量相关
传递给新的流水线当前 Job 可见的、业务定义的环境变量。
默认值中有如下环境变量,用户无法覆盖:
APPLY_TRIGGER_BUILD_ID,含义同 CI 默认环境变量中的CNB_BUILD_IDAPPLY_TRIGGER_PIPELINE_ID,含义同 CI 默认环境变量中的CNB_PIPELINE_IDAPPLY_TRIGGER_REPO_SLUG,含义同 CI 默认环境变量中的CNB_REPO_SLUGAPPLY_TRIGGER_REPO_ID,含义同 CI 默认环境变量中的CNB_REPO_IDAPPLY_TRIGGER_USER,含义同 CI 默认环境变量中的CNB_BUILD_USERAPPLY_TRIGGER_BRANCH,含义同 CI 默认环境变量中的CNB_BRANCHAPPLY_TRIGGER_COMMIT,含义同 CI 默认环境变量中的CNB_COMMITAPPLY_TRIGGER_COMMIT_SHORT,含义同 CI 默认环境变量中的CNB_COMMIT_SHORTAPPLY_TRIGGER_ORIGIN_EVENT,含义同 CI 默认环境变量中的CNB_EVENTCNB_PULL_REQUEST_ID,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_IDCNB_PULL_REQUEST_IID,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_IIDCNB_PULL_REQUEST_MERGE_SHA,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_MERGE_SHA
Config 取值优先级
按以下顺序依次取值,取到为止:
configconfigFrom- 当前仓库
.cnb.yml - 若在
pull_request.merged事件中调用 apply 内置任务,取合并后的配置文件 - 若在
pull_request.target、pull_request.mergeable事件中 调用apply内置任务,取目标分支的配置文件 - 其他情况取当前分支配置文件
configFrom 只支持本地文件如 ./test/.cnb.yml,远程文件可先自行下到本地。
输出结果
{
"sn": "cnb-i5o-1ht8e12hi", // 构建号
"buildLogUrl": "https://cnb.cool/<your-repo-slug>/-/build/logs/cnb-i5o-1ht8e12hi", // 构建日志链接
"message": "success",
"buildSuccess": true, // 触发的构建是否成功,此key仅在同步模式下存在
"lastJobExports": {} // 触发的流水线最后一个job导出的环境变量
}配置样例
以下示例展示了 cnb:apply 的几种常用方式:
使用 configFrom 引用本地配置文件:
.cnb.yml
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
configFrom: ./test/.cnb.yml
event: api_trigger_test使用 config 内联配置:
.cnb.yml
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
config: |
main:
api_trigger_test:
- stages:
- name: test
script: echo test
event: api_trigger_test触发当前配置文件中定义的其他事件:
.cnb.yml
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
event: api_trigger_test
api_trigger_test:
- stages:
- name: test
script: echo test同步模式(等待子流水线执行完成):
.cnb.yml
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
configFrom: .xxx.yml
event: api_trigger_test
sync: true