Azure devops 是否可以基于变量创建其他管道步骤?

Azure devops 是否可以基于变量创建其他管道步骤?,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,在Azure Devops YAML管道中,是否可以基于一些可变数据动态创建其他步骤(而不创建我们自己的插件) 问题是,我看到我想迭代几个目录,但我不想把它们都放在一个步骤中,因为这会使扫描查找错误变得更加困难。可以有条件地包含带有 我认为,同一页面上的示例将很好地说明如何迭代列表参数并基于每个值创建/运行步骤 在Azure Devops YAML管道中是否可以动态创建 基于某些可变数据的附加步骤(无需创建我们自己的 插件) 否,Yaml管道(azure pipeline.yml)处于版本控制之

在Azure Devops YAML管道中,是否可以基于一些可变数据动态创建其他步骤(而不创建我们自己的插件)


问题是,我看到我想迭代几个目录,但我不想把它们都放在一个步骤中,因为这会使扫描查找错误变得更加困难。

可以有条件地包含带有

我认为,同一页面上的示例将很好地说明如何迭代列表参数并基于每个值创建/运行步骤

在Azure Devops YAML管道中是否可以动态创建 基于某些可变数据的附加步骤(无需创建我们自己的 插件)

否,Yaml管道(azure pipeline.yml)处于版本控制之下。因此,您希望(对于原始标题)在执行管道时动态提交对
azure pipeline.yml
文件的更改。这不是推荐的工作流

<> >您可以考虑使用动态启用/禁用附加步骤。

  • 或者使用一些:

2.如果您没有使用条件,您可以按照上面Simon的建议进行检查

而且#1和#2都可以使用新功能

3.但是,如果您所指的动态变量来自
components=ls-1$(Pipeline.Workspace)/components
命令的结果,则上述提示不适用于这种情况。为此,您可以尝试以下方法:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # Write your PowerShell commands here.
      # some logic to run `components = result of ls -1 $(Pipeline.Workspace)/components` and determine whether to set the WhetherToRun=true.

      'Write-Host "##vso[task.setvariable variable=WhetherToRun]True"'

- task: CmdLine@2
  inputs:
    script: |
      echo Hello world
  condition: eq(variables['WhetherToRun'], 'True')

根据我的操作,我想遍历多个目录,因此我在寻找一个循环而不是if(),第二个链接中的“each”关键字是否涵盖了这一点?我认为可能会,除了传入的参数列表示例在脚本中仍然是硬编码的(在extends示例中)虽然这是一个很好的起点,但我不会使用诸如
components=result of ls-1$(Pipeline.Workspace)/components之类的东西动态构建,因此我将尝试看看我能走多远。仅仅看得更远似乎是不可能的,因为表达式函数中没有“split”的等价物,所以我们只能处理“字符串”而不是列表。嗨,朋友,这个问题有更新吗?如果你已经得到了这个问题的最终答案,你可以考虑添加。这只是一个提醒:)
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # Write your PowerShell commands here.
      # some logic to run `components = result of ls -1 $(Pipeline.Workspace)/components` and determine whether to set the WhetherToRun=true.

      'Write-Host "##vso[task.setvariable variable=WhetherToRun]True"'

- task: CmdLine@2
  inputs:
    script: |
      echo Hello world
  condition: eq(variables['WhetherToRun'], 'True')