trigger

cnb:trigger

在当前仓库中,触发另外一个仓库的自定义事件流水线。

# 适用事件

所有事件

# 参数

# token

  • type: String
  • required: true

个人访问令牌。

新流水线触发者为令牌对应用户,会判断有无目标仓库权限。

# slug

  • type: String
  • required: true

目标仓库的完整路径,如:group/repo

# event

  • type: String
  • required: true

触发的自定义事件名,必须是 api_trigger 或 以api_trigger_ 开头。

需要目标仓库配置了对应事件的流水线,才可以触发。

# branch

  • type: String
  • required: false

触发分支。默认为主分支。

# sha

  • type: String
  • required: false

触发分支中的提交 ID。默认取 branch 的最新提交记录。

# env

触发目标仓库流水线时的环境变量。

默认值中有如下环境变量,用户无法覆盖

  • API_TRIGGER_BUILD_ID,含义同 CI 默认环境变量中的 CNB_BUILD_ID
  • API_TRIGGER_PIPELINE_ID,含义同 CI 默认环境变量中的 CNB_PIPELINE_ID
  • API_TRIGGER_REPO_SLUG,含义同 CI 默认环境变量中的 CNB_REPO_SLUG
  • API_TRIGGER_REPO_ID,含义同 CI 默认环境变量中的 CNB_REPO_ID
  • API_TRIGGER_USER,含义同 CI 默认环境变量中的 CNB_BUILD_USER
  • API_TRIGGER_BRANCH,含义同 CI 默认环境变量中的 CNB_BRANCH
  • API_TRIGGER_COMMIT,含义同 CI 默认环境变量中的 CNB_COMMIT
  • API_TRIGGER_COMMIT_SHORT,含义同 CI 默认环境变量中的 CNB_COMMIT_SHORT

# sync

  • type: Boolean
  • required: false
  • default: false

是否同步执行,同步模式下会等待本次 trigger 流水线执行成功后,再执行下一个任务。

# continueOnBuildError

  • type: Boolean
  • required: false
  • default: false

同步模式下,触发的流水线构建失败时,是否继续执行下个任务。

# 输出结果

{
  "sn": "cnb-i5o-1ht8e12hi", // 构建号
  "buildLogUrl": "http://xxx.com/my-group/my-repo/-/build/logs/cnb-i5o-1ht8e12hi", // 构建日志链接
  "message": "success",
  "buildSuccess": true, // 触发的构建是否成功,此key仅在同步模式下存在
  "lastJobExports": {} // 触发的流水线最后一个job导出的环境变量
}

# 配置样例

# 基本使用

在当前仓库触发一个仓库 main 分支的事件名为 api_trigger_test 的流水线。

该流水线配置文件使用仓库 main 分支的 .cnb.yml 文件。

使用访问令牌 $TOKEN 查询用户是否有仓库权限。

main:
  push:
    - stages:
        - name: trigger
          type: cnb:trigger
          imports: https://xxx/envs.yml
          options:
            token: $TOKEN
            slug: a/b
            branch: main
            event: api_trigger_test