云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







概述

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

条件工作流可以应用于任何管道的步骤

页面内容


步骤状态条件

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

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

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


运行可变条件工作流

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

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

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

在本例中,当在运行期间触发step2时,它将检查条件等待,直到满足。如果条件是不满意的,它将跳过一个消息。注意,在等待执行条件得到满足时,step2也可以超时。


为步骤添加条件工作流

为一个步骤添加一个条件工作流:

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

    确保这些值是小写的,并使用如上所示的相同拼写。任何偏离都会导致管道源同步失败。

    例子在这个例子中:

    • step_B只有一个状态:成功
    • Step_c有多个状态:失败跳过取消了
    —name: step_A类型:Bash配置:allowFailure: boolean #可选inputSteps:—name: step_B状态:—success—name: step_C状态:—失败—跳过—取消
  3. 可选如果您不希望某个特定步骤对运行的最终状态起作用,则可以添加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也不需要任何特殊配置,因为步骤本身不决定下游工作流路径。

YAML
- 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。

YAML
—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的状态。

YAML
—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时。

YAML
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
  • 没有标签
版权所有©2023 JFrog Ltd.