YAML模式
TriggerPipeline原生步骤的YAML模式如下:
TriggerPipeline
- name:步骤:- name: type: TriggerPipeline配置:#继承bash的所有标签;//m.si-fil.com/confluence/display/JFROG/Bash pipelineName: # required stepName: # required branchName: # optional如果目标是多分支,建议使用。projectKey: #可选。如果目标属于项目,建议使用。集成:- name: #需要执行:onStart: - echo "Preparing for work…"- set_trigger_payload stepVariables "test=true" - set_trigger_payload pipelineVariables "notify=true" "version=5.4.3" - export pipelines_poll_interval_seconds=30 #默认为10 onSuccess: - echo "Job well done!" onFailure: - echo "Something went wrong" - echo "Nested run status is: ${nested_run_status}" onComplete: - echo "Cleaning up"
标签
名字
一个字母数字标识步骤的字符串(允许使用下划线)。
类型
必须TriggerPipeline
对于这一步,输入:
配置
指定步骤执行环境的所有配置选择。此步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
集成 |
指定一个JFrog平台访问令牌集成。此集成应包含一个令牌,该令牌具有触发指定管道的适当访问级别。 |
要求 |
pipelineName |
要触发的管道的名称 |
要求 |
stepName |
要触发的步骤的名称 |
要求 |
branchName |
要触发的分支的名称。如果您的目标管道来自多支路管道源。 |
可选 可能需要 |
projectKey |
包含要触发的管道的Project的唯一键。只有当您的目标管道属于项目时,才应该使用此选项。 | 可选 可能需要 |
此外,可以定义这些标签来支持步骤的本机操作:
从Bash派生的标签
执行
声明要在执行前和执行后阶段执行的shell命令序列的集合:标签 | 使用说明 | 必需的/可选 |
---|---|---|
onStart |
在本机操作之前执行的命令。这是使用的理想场所set_trigger_payload 实用程序函数,用于向目标添加自定义步骤级和管道级变量。 |
可选 |
调用onSuccess |
成功完成时执行的命令 | 可选 |
onFailure |
完成失败时执行的命令 | 可选 |
onComplete |
在任何补全时执行的命令 | 可选 |
执行的操作onExecute
阶段是此步骤类型所固有的,并且不能被覆盖。
环境变量
TriggerPipeline步骤利用几个新的环境变量来提供尽可能多的信息。
这些变量可用于配置控件的行为TriggerPipeline
一步
变量名 | 价值 |
---|---|
pipelines_poll_interval_seconds | 步骤应该轮询其嵌套运行状态的频率(以秒为单位)。 默认为10秒 |
这些变量被注入到目标管道的环境中
变量名 | 价值 |
---|---|
parent_step_id | TriggerPipeline步骤的唯一ID |
parent_step_name | TriggerPipeline步骤的名称 |
parent_step_url | 链接到TriggerPipeline步骤的URL |
parent_run_id | TriggerPipeline步骤所属运行的唯一ID |
parent_run_number | TriggerPipeline步骤所属的运行的运行号 |
这些变量被导出到TriggerPipeline
目标管道运行完成后的步骤环境。
变量名 | 价值 |
---|---|
nested_run_status | 被触发运行的最终状态(可以是成功、失败、错误、取消、超时或跳过) |
nested_run_number | 被触发运行的运行号。 |
nested_run_duration_seconds | 被触发运行的总持续时间(以秒为单位) |
nested_run_url | 链接到被触发步骤的URL |
例子
下面以配置aTriggerPipeline
的一步。
这个例子需要JFrog平台访问令牌集成。
管道:-名称:top_pipeline步骤:-名称:scan_controller类型:TriggerPipeline配置:pipelineName: scanner_pipeline stepName: scan_it集成:-名称:myPlatformToken环境变量:scan_target:默认:"hello-world" allowCustom: true值:- "vault" - "redis" - "postgresql" - "hello-world"执行:onStart: - set_trigger_payload pipelineVariables "scan_target=${scan_target}" - set_trigger_payload stepVariables "notify=email" "uploadReport=true" onComplete:—echo "Final status is $nested_run_status"—name: scanner_pipeline steps:—name: scan_it type: Bash execution: onExecute:—echo "要扫描的映像为$scan_target."- echo " $parent_step_url被父步触发"
它是如何工作的
当你使用TriggerPipeline它是管道中的原生步骤,在后台执行以下功能:
- GET /projects(如果提供了projectKey,就会找到项目)
- GET /pipelines(通过管道名称查找管道)
- GET /pipelineSteps(通过其名称查找步骤)
- POST /pipelineSteps/:id/trigger(触发从指定步骤开始的运行)
- GET /runs/:id(轮询运行以检查其状态)