步骤状态条件
与状态
条件工作流,您可以配置一个步骤,仅当输入步骤在当前运行期间的状态满足时才执行。您可以为一个步骤配置任意数量的状态。
步骤:- name:type: configuration: allowFailure: boolean #optional inputSteps: - name: status: - - - -
重要的是要注意,当前运行中输入步骤的状态仅用于条件工作流。如果某个步骤不是当前运行的一部分,则总是假定满足该输入步骤的条件。
运行可变条件工作流
的值创建条件add_run_variables
环境变量,以便在将步骤分配给节点之前,可以根据动态设置的变量跳过该步骤。
当使用条件
,布尔值必须用引号括起来。
例子:
条件:'trigger == "true"'
条件:"trigger == 'true'"
条件:trigger == 'true'
条件:trigger == "true"
steps: - name:type: execution: onExecute: - add_run_variables 'key=value' - name: type: configuration: condition: 'key= =value' //任何逻辑布尔表达式,结果为布尔值inputSteps: - name:
例子
- name:示例步骤:- name: step1类型:Bash执行:onExecute: - echo 'step1' - add_run_variables 'var1=1' - name: step2类型:Bash配置:condition: 'var1= =1' //任何逻辑布尔表达式,结果为布尔inputSteps: - name: step1执行:onExecute: - echo 'success'
在本例中,当在运行期间触发step2时,它将检查条件
等待,直到满足。如果条件
是不满意的,它将跳过一个消息。注意,在等待执行条件得到满足时,step2也可以超时。
为步骤添加条件工作流
为一个步骤添加一个条件工作流:
- 在
inputSteps
节的一个步骤,添加状态
财产。 - 添加以下任意值:
成功
失败
错误
取消了
跳过
不稳定
超时
确保这些值是小写的,并使用如上所示的相同拼写。任何偏离都会导致管道源同步失败。
例子在这个例子中:
- step_B只有一个状态:
成功
- Step_c有多个状态:
失败
,跳过
,取消了
—name: step_A类型:Bash配置:allowFailure: boolean #可选inputSteps:—name: step_B状态:—success—name: step_C状态:—失败—跳过—取消
- 可选:如果您不希望某个特定步骤对运行的最终状态起作用,则可以添加
allowFailure:真
到配置
该步骤的部分。使用此选项时,即使某个步骤失败或被跳过,也不会影响运行的最终状态。例如,管道包含两个步骤S1和S2:
场景1:步骤S2是清理步骤,其状态无关紧要。整体运行状态应由S1的状态决定,忽略S2的状态。在本例中,添加
allowFailure:真
到S2,因为这纯粹是一个清理步骤,只需要考虑S1的状态。场景2步骤S1作为工作流的一部分被配置为失败。然而,即使S1失败,S2也会运行,并且运行不被视为失败。运行的最终状态应该反映S2的状态,因为S1的状态不会中断流。在本例中,添加
allowFailure:真
到S1,因为S1的故障是已知的可能性和预期的,这应该不会影响运行的最终状态。
有关更多示例,请参见allowFailure例子.
查看运行日志
当您运行管道时,除了其他日志之外,具有条件工作流的步骤的日志还提供了有关被跳过步骤的信息。
要查看这些日志,请进入管道运行日志查看,单击跳过的步骤显示当前运行的日志。
例子
示例1
在这个例子中:
- 只有步骤A成功才会触发步骤B(默认行为),只有步骤A处于失败、错误或超时状态才会触发步骤C。
- 步骤B不需要任何特殊配置,因为默认行为是在前一步成功时触发一个依赖步骤。
- 步骤A也不需要任何特殊配置,因为步骤本身不决定下游工作流路径。
- name: demo_conditional steps: - name: step_A type: Bash配置:inputResources: - 2022世界杯阿根廷预选赛赛程name: script_conditional execution: onExecute: - echo“执行step_A”- printenv - name: step_B类型:Bash配置:inputSteps: - name: step_A执行:onExecute: - echo“执行step_B”- printenv - name: step_C类型:Bash配置:inputSteps: - name: step_A状态:- failure - error - timeout执行:onExecute: - echo“执行step_C”- printenv
示例2
在这个例子中,步骤Q成功,步骤R失败,触发步骤S。但是,如果步骤Q和步骤R在运行过程中都成功或失败,则不会触发步骤S,并跳过步骤S。
—name: step_S类型:Bash配置:inputSteps:—name: step_Q状态:—success—name: step_R状态:—失败执行:onExecute:—echo“正在执行step_S”—printenv . sh
示例3
在这个例子中,步骤M成功,步骤N失败,触发步骤O。但是,由于步骤N不是当前运行的一部分,因此在步骤M成功时触发步骤O,并且忽略步骤N的状态。
—name: step_O类型:Bash配置:inputSteps:—name: step_M状态:—success—name: step_N状态:—失败执行:onExecute:—echo“正在执行step_O”—printenv . sh
例4 -使用环境变量
的step_ < inputStepName > _statusName
,它是一个在运行时自动可用的环境变量,可以与条件工作流结合使用。这step_ < inputStepName > _statusName
环境变量对于获取任何输入步骤的状态非常有用,特别是在使用Jenkins时。
2022世界杯阿根廷预选赛赛程资源:-名称:script_gh类型:GitRepo配置:路径:jfrog/sample-script gitProvider: myGithub分支:包括:^{{gitBranch}}$管道:-名称:simple_jenkins_demo步骤:-名称:jenkins类型:jenkins配置:inputResources: -名称:script_gh jenkinsJobName: testPipeline集成:-名称:myJenkins -名称:step_A类型:Bash配置:inputSteps: -名称:jenkins状态:-失败-错误-超时执行:onExecute:- echo " execute step_A" - if [$step_jenkins_statusName == "failure"];然后回应“做点什么”;f - if [$step_jenkins_statusName == "error"];然后回应“做点别的事”;fi - name: simple_conditional_B type: Bash配置:inputSteps:—name: jenkins status:—failure—error execution: onExecute:—echo "正在执行simple_conditional_B"—printenv . print
allowFailure例子
示例1
将Step1配置为成功,将step2配置为失败。当step1失败且运行的最终状态为成功时,允许Step2运行。
-名称:PIPE_9455_Workflow_03步骤:-名称:step1类型:Bash执行:onExecute: - echo 'step1' -名称:step2类型:Bash配置:allowFailure: true inputSteps: -名称:step1状态:-成功-错误-失败-超时执行:onExecute: - echo 'success' -退出1
示例2
将Step1配置为失败,将step2配置为成功。年代当step1失败且运行的最终状态为success时,允许运行Tep2。
管道:-名称:PIPE_9455_Workflow_05步骤:-名称:step1类型:Bash配置:allowFailure: true执行:onExecute: - echo 'step1' - exit 1 -名称:step2类型:Bash配置:inputSteps: -名称:step1状态:-成功-错误-失败-超时执行:onExecute: - echo 'success'
示例3
将Step1配置为成功,将step2配置为失败。触发后,运行的最终状态为失败。
-名称:PIPE_9455_Workflow_03步骤:-名称:step1类型:Bash配置:allowFailure: true执行:onExecute: - echo 'step1' -名称:step2类型:Bash配置:inputSteps: -名称:step1状态:-成功-错误-失败-超时执行:onExecute: - echo 'failure' -退出1