步骤状态条件
与状态
条件工作流,您可以将步骤配置为仅当输入步骤在当前运行期间的状态满足时才执行。您可以为一个步骤配置任意数量的状态。
YAML模式
步骤:—name:type: configuration: inputSteps:—name: status:— — — .步骤
重要的是要注意,对于有条件的工作流,只考虑当前运行中的输入步骤的状态。如果某个步骤不是当前运行的一部分,则总是假定该输入步骤的条件满足。
为步骤添加条件工作流
为步骤添加条件工作流:
- 在
inputSteps
节的一个步骤,添加状态
财产。 - 添加下列任意值:
成功
失败
错误
取消了
跳过
不稳定
超时
确保值是小写的,并使用与上面显示的相同的拼写。任何偏离这一点都将导致管道源同步失败。
例子:在这个例子中:
- step_B只有一个状态:
成功
- Step_c有多个状态:
失败
,跳过
,取消了
—name: step_A type: Bash configuration: inputSteps:—name: step_B status:—success—name: step_C status:—failure—跳过—取消
查看运行日志
当您运行管道时,除了其他日志外,带有条件工作流的步骤的日志还提供了关于跳过的步骤的信息。
若要查看这些日志,请转到管路运行日志视图中,单击跳过的步骤,显示当前运行的日志。
例子
示例1
在这个例子中:
- 步骤B仅在步骤A成功时触发(默认行为),步骤C仅在步骤A处于失败、错误或超时状态时触发。
- 步骤B不需要任何特殊配置,因为默认行为是在前一步成功时触发一个依赖步骤。
- 步骤A也不需要任何特殊的配置,因为该步骤本身并不决定下游工作流路径。
YAML
—name: demo_conditional steps:—name: step_A type: Bash配置:inputResources:—name:2022世界杯阿根廷预选赛赛程 script_conditional execution: onExecute:—echo“正在执行step_A”—printenv:—name: step_B type: Bash配置:inputSteps:—name: step_A execution: onExecute:—print tenv:—name: step_C type: Bash配置:inputSteps:—name: step_A status:—failure—error—timeout execution: onExecute:—echo“正在执行step_C”—printenv . sh
示例2
在这个例子中,步骤Q成功,步骤R失败,触发步骤S。但是,如果步骤Q和步骤R在运行过程中都成功或失败,则不会触发步骤S,而跳过步骤S。
YAML
—name: step_S type: Bash configuration: inputSteps:—name: step_Q status:—success—name: step_R status:—failure execution: onExecute:—echo“正在执行step_S”—printenv . sh: printenv . sh
示例3
在这个例子中,步骤M成功,步骤N失败,触发步骤O。但是,由于步骤N不是当前运行的一部分,所以当步骤M成功时触发步骤O,忽略步骤N的状态。
YAML
—name: step_O type: Bash configuration: inputSteps:—name: step_M status:—success—name: step_N status:—失败执行:onExecute:—echo“正在执行step_O”—printenv . cfg . cfg
例4 -使用环境变量
的step_ < inputStepName > _statusName
,这是一个在运行时自动可用的环境变量,可以与条件工作流结合使用。这step_ < inputStepName > _statusName
environment变量对于获取任何输入步骤的状态非常有用,特别是在使用Jenkins时。
YAML
2022世界杯阿根廷预选赛赛程resources:—name: script_gh type: GitRepo configuration: path: jfrog/sample-script gitProvider: myGithub branches: include: ^{{gitBranch}}$ pipelines:—name: simple_jenkins_demo steps:—name: jenkins type: jenkins configuration: inputResources:—name: script_gh jenkinsJobName: testPipeline integrations:—name: myJenkins - name: step_A type: Bash configuration: inputSteps:—name: jenkins status:—failure - error - timeout execution: onExecute:- echo "正在执行step_A" - if [$step_jenkins_statusName == "failure"];然后重复“Do something”;fi - if [$step_jenkins_statusName == "error"];然后重复“做点别的”;fi - name: simple_conditional_B type: Bash configuration: inputSteps:—name: jenkins status:—failure—错误执行:onExecute:—echo "正在执行simple_conditional_B"—printenv . cfg . cfg