apply
cnb:apply
指定配置文件,绑定到当前 Git 仓库,执行指定事件流水线。
# 适用事件
push
branch.create
pull_request.target
pull_request.mergeable
tag_push
pull_request.merged
api_trigger
web_trigger
crontab
tag_deploy
# 参数
# 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
同步模式下,触发的流水线构建失败时,是否继续执行下个任务。
# ignoreGitStatus
- type:
Boolean
- required:
false
- default:
false
是否忽略设置 git status
忽略后流水线将不会出现在 commit checks
中。
# title
- type:
String
- required:
false
自定义流水线标题
# 环境变量相关
当前 Job
可见的,业务定义的环境变量全部传递给新的流水线。
默认值中有如下环境变量,用户无法覆盖:
APPLY_TRIGGER_BUILD_ID
,含义同 CI 默认环境变量中的CNB_BUILD_ID
APPLY_TRIGGER_PIPELINE_ID
,含义同 CI 默认环境变量中的CNB_PIPELINE_ID
APPLY_TRIGGER_REPO_SLUG
,含义同 CI 默认环境变量中的CNB_REPO_SLUG
APPLY_TRIGGER_REPO_ID
,含义同 CI 默认环境变量中的CNB_REPO_ID
APPLY_TRIGGER_USER
,含义同 CI 默认环境变量中的CNB_BUILD_USER
APPLY_TRIGGER_BRANCH
,含义同 CI 默认环境变量中的CNB_BRANCH
APPLY_TRIGGER_COMMIT
,含义同 CI 默认环境变量中的CNB_COMMIT
APPLY_TRIGGER_COMMIT_SHORT
,含义同 CI 默认环境变量中的CNB_COMMIT_SHORT
APPLY_TRIGGER_ORIGIN_EVENT
,含义同 CI 默认环境变量中的CNB_EVENT
CNB_PULL_REQUEST_ID
,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_ID
CNB_PULL_REQUEST_IID
,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_IID
CNB_PULL_REQUEST_MERGE_SHA
,含义同 CI 默认环境变量中的CNB_PULL_REQUEST_MERGE_SHA
# config 取值优先级
按以下顺序依次取值,取到为止:
config
configFrom
- 当前仓库
.cnb.yml
- 若在
pull_request.merged
事件中调用apply
内置任务,取合并后的配置文件 - 若在
pull_request.target
、pull_request.mergeable
事件中调用apply
内置任务,取目标分支的配置文件 - 其他情况取当前分支配置文件
- 若在
configFrom
只支持本地文件如 ./test/.cnb.yml
,远程文件可先自行下到本地。
# 输出结果
{
"sn": "cnb-i5o-1ht8e12hi", // 构建号
"buildLogUrl": "http://xxx/my-group/my-repo/-/build/logs/cnb-i5o-1ht8e12hi", // 构建日志链接
"message": "success",
"buildSuccess": true, // 触发的构建是否成功,此key仅在同步模式下存在
"lastJobExports": {} // 触发的流水线最后一个job导出的环境变量
}
# 配置样例
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
configFrom: ./test/.cnb.yml
event: api_trigger_test
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
config: |
main:
api_trigger_test:
- stages:
- name: test
script: echo test
event: api_trigger_test
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
# 执行当前配置文件的其它事件
event: api_trigger_test
api_trigger_test:
- stages:
- name: test
script: echo test
main:
push:
- stages:
- name: trigger
type: cnb:apply
options:
configFrom: .xxx.yml
event: api_trigger_test
sync: true