【问题标题】:Is there a way to dynamically assign names to tasks in yaml pipelines for Azure Devops?有没有办法为 Azure Devops 的 yaml 管道中的任务动态分配名称?
【发布时间】:2020-12-30 06:05:28
【问题描述】:

我正在使用 DownloadPipelineArtifact@2 任务并循环遍历一系列管道以下载每个管道的工件。我想在后续任务中使用每个任务的 $(BuildNumber) 输出。

${{ each p in pipelines }}:
  - task: DownloadPipelineArtifact@2
    displayName: 'Download ${{ p.alias }} Artifact - ${{ p.artifact }}'
    name: 'Download_${{ p.alias }}'
    inputs:
      buildType: specific
      project: $(System.TeamProjectId)
      pipeline: ${{ p.id }}
      preferTriggeringPipeline: false
      runVersion: latestFromBranch
      runBranch: 'refs/heads/${{ p.branch }}'
      artifact: ${{ p.artifact }}
      patterns: ${{ p.patterns }}
      targetPath: '$(Pipeline.Workspace)/artifacts/${{ p.alias }}/${{ p.artifact }}'

不幸的是,我无法这样做,因为我需要通过任务名称来引用任务,并且我无法为任务分配动态名称。我收到一个错误提示

有效名称只能包含字母数字字符和“_”,并且不能以数字开头。

我尝试使用运行时变量、表达式和名称计数器,但都失败并出现相同的错误。我在这里假设名称字段不是动态分配的。

没有名称字段一切正常。但据我了解,我需要任务的名称来引用它并提取它的输出。比如:

{{ taskName.BuildNumber }}

如果有人知道我可以动态分配名称或提取循环中每个任务的 $(BuildNumber) 的任何方式,请告诉我。谢谢!

【问题讨论】:

  • 没有。那是'displayName'字段。我的问题是关于“名称”字段。
  • 这个问题怎么样?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息吗?

标签: azure-devops azure-pipelines azure-pipelines-build-task azure-pipelines-yaml azure-pipelines-tasks


【解决方案1】:

有没有办法为 Azure Devops 的 yaml 管道中的任务动态分配名称?

恐怕没有这种方法可以为 Azure Devops 的 yaml 管道中的任务动态分配 名称 因为任务本身不包含Name字段,所以下载的工件的Name是由构建时生成的工件的名称决定的。本任务只需要下载神器,所以本任务不包含改名字段。当我们在这个字段的值中使用任何变量时,编译器会解析这个字段,然后它会抛出你问题中提到的错误:

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2020-08-27
    • 2020-08-07
    • 2021-12-29
    • 2020-05-28
    • 2019-06-29
    相关资源
    最近更新 更多