云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

管道中的条件工作流使您能够根据为p设置的某些条件选择执行或跳过步骤逆流而上。这意味着,当工作流到达一个条件步骤时,它可以根据步骤的状态选择不同的工作流路径。这为管道的执行逻辑提供了更大的灵活性。

页面内容


步骤状态条件

状态条件工作流,您可以将步骤配置为仅当输入步骤在当前运行期间的状态满足时才执行。您可以为一个步骤配置任意数量的状态。

YAML模式
步骤:—name:  type:  configuration: allowFailure: boolean #optional inputSteps:—name:  status:— -  -  .步骤

重要的是要注意,对于有条件的工作流,只考虑当前运行中的输入步骤的状态。如果某个步骤不是当前运行的一部分,则总是假定该输入步骤的条件满足。


运行变量条件工作流

的值创建条件add_run_variables环境变量,以便在分配给节点之前,可以根据动态设置的变量跳过步骤。

当使用条件,布尔值必须用引号括起来。
例子

  • 条件:'触发== "true"'
  • 条件:"触发== 'true'"
  • 条件:触发== 'true'
  • 条件:触发== "true"
YAML模式
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配置:条件:'var1= =1' //任何逻辑布尔表达式的结果布尔inputSteps: - name: step1执行:onExecute: - echo 'success'

在本例中,当在运行期间触发step2时,它将检查条件然后等待,直到他们满意为止。如果条件如果不满意,则会跳过一条消息。注意,step2也可以在等待执行条件满足时超时。


为步骤添加条件工作流

为步骤添加条件工作流:

  1. inputSteps节的一个步骤,添加状态财产。
  2. 添加下列任意值:
    • 成功
    • 失败
    • 错误
    • 取消了
    • 跳过
    • 不稳定
    • 超时

    确保值是小写的,并使用与上面显示的相同的拼写。任何偏离这一点都将导致管道源同步失败。

    例子:在这个例子中:

    • step_B只有一个状态:成功
    • Step_c有多个状态:失败跳过取消了
    —name: step_A type: Bash configuration: allowFailure: boolean #optional inputSteps:—name: step_B status:—success—name: step_C status:—failure—跳过—取消
  3. 可选如果您不希望某个特定步骤影响运行的最终状态,可以添加allowFailure:真配置这一步的一部分。使用此选项时,即使某个步骤失败或被跳过,运行的最终状态也不会受到影响。

    例如,一个管道包含两个步骤S1和S2:

    • 场景1:步骤S2为清理步骤,状态无关。总体运行状态由S1的状态决定,S2的状态可以忽略。在这种情况下,添加allowFailure:真到S2,因为这纯粹是一个清理步骤,只需要考虑S1的状态。

    • 场景2:步骤S1已被配置为失败,作为工作流的一部分。然而,即使S1失败,S2也会运行,并且运行不被认为是失败。运行的最终状态应该反映S2的状态,因为S1的状态不会中断流。在这种情况下,添加allowFailure:真因为S1的失败是已知的可能性和预期的,不应该影响运行的最终状态。

有关更多示例,请参见allowFailure例子


查看运行日志

当您运行管道时,除了其他日志外,带有条件工作流的步骤的日志还提供了关于跳过的步骤的信息。

若要查看这些日志,请转到管路运行日志视图中,单击跳过的步骤,显示当前运行的日志。


例子

示例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 > _statusNameenvironment变量对于获取任何输入步骤的状态非常有用,特别是在使用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

allowFailure例子

示例1

Step1配置为成功,step2配置为失败。当step1失败并且运行的最终状态为成功时,允许运行Step2。

管线:—name: PIPE_9455_Workflow_03 steps:—name: step1 type: Bash执行:onExecute:—echo 'step1'—name: step2 type: Bash配置:allowFailure: true inputSteps:—name: step1 status:—success - error - failure - timeout execute: onExecute:—echo 'success' - exit 1

示例2

Step1配置为失败,step2配置为成功。年代当step1失败并且运行的最终状态为成功时,允许运行Tep2。

管线:—name: PIPE_9455_Workflow_05 steps:—name: step1 type: Bash配置:allowFailure: true执行:onExecute:—echo 'step1' - exit 1—name: step2 type: Bash配置:inputSteps:—name: step1 status:—success—error—failure—timeout执行:onExecute:—echo 'success'

示例3

Step1配置为成功,step2配置为失败。当触发时,运行的最终状态为失败。

管线:—name: PIPE_9455_Workflow_03 steps:—name: step1 type: Bash配置:allowFailure: true执行:onExecute:—echo 'step1'—name: step2 type: Bash配置:inputSteps:—name: step1 status:—success - error - failure - timeout执行:onExecute:—echo 'failure' - exit 1
  • 没有标签
版权所有©2022 JFrog Ltd.