选择用于部署管道(YAML)的工件

时间:2020-01-29 14:58:49

标签: azure-devops azure-pipelines

我有一个基于GUI的发布管道,该管道可以部署从构建管道生成的工件。 我可以选择需要部署的工件版本。

Artifact-version-selection

如何使用YAML管道实现相同目标?

2 个答案:

答案 0 :(得分:0)

您可以在runId输入中使用Download Pipeline Artifacts任务:

# Download an artifact named 'WebApp' from a specific build run to 'bin' in $(Build.SourcesDirectory)
- task: DownloadPipelineArtifact@2
  inputs:
    source: 'specific'
    artifact: 'WebApp'
    path: $(Build.SourcesDirectory)/bin
    project: 'FabrikamFiber'
    pipeline: 12
    runVersion: 'specific'
    runId: 40

答案 1 :(得分:0)

在这里,我同意@Shayki,我知道根据实际需求选择相应的工件非常方便,但是到目前为止,YAML不支持您想要的对象。

因为麻烦是,在您使用带有经典UI的发行版(如上图所示)时,配置完成的时间是构建执行完成后。此时,系统可以检测并显示工件历史记录。

但是,当您使用multi-stage配置管道时,构建和发布过程会被组合在一起。我们正在开发以丰富YAML管道的功能,但是直到现在,我们还没有扩展该功能,例如从构建历史记录中收集所有工件信息并将其显示在YAML配置面板中。

因此,如果您想立即使用精选工件实现类似功能,则必须对内部编号进行硬编码。


如果您不想对YAML定义中的runid进行硬编码,可以考虑通过queue variable来解决。

例如:

- task: DownloadPipelineArtifact@2
  inputs:
    source: 'specific'
    artifact: 'drop'
    path: $(Build.SourcesDirectory)/bin
    project: 'AndroidBuild'
    pipeline: 12
    runVersion: 'specific'
    runId: $(buildid)

在上面的定义中,buildid是变量,您可以在队列时间配置其值:

enter image description here

当您要选择其他工件时,不需要对管道做任何修改,只需在队列时间传递值即可。但是,如您所见,仍然需要硬代码。


如果我们可以选择而不是记住并对该值进行硬编码,那将是一个很棒的功能。您可以向我们的official forum提出您的想法,我们的产品团队会定期对其进行审核,并考虑将其纳入我们的开发路线图中。