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







您正在查看该页的旧版本。查看当前版本

与当前比较查看页面历史记录

版本1下一个”

概述

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

页面内容


步骤状态条件

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

YAML模式
步骤:—name:  type:  configuration: inputSteps:—name:  status:— .步骤

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


为步骤添加条件工作流

为步骤添加条件工作流:

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

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


例子:在这个例子中:

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