使用从 UI 中的资源中选择的工件手动运行 YAML 构建管道将被忽略

tje*_*net 4 azure-devops azure-pipelines

我们有一个 YAML 文件 ( pipelineB),它执行它必须执行的操作,它从特定的其他现有构建管道 ( pipelineA) 下载最新的构建工件。这是自动触发的。现在我们希望pipelineB手动运行此构建并能够选择要使用的另一个工件版本。在 Azure DevOps 构建管道中,有一个选项显示“运行管道”,您可以在其中选择要使用的“资源”。如果您选择一个资源,您最终会看到一个包含所有构建的列表,pipelineA您可以从中进行选择。

运行管道

资源

PipelineA 运行

1.2.43-10019-master如果我们然后从管道运行中选择较旧的(例如)构建pipelineA并运行pipelineB,并且我们查看日志记录,我们会发现它会忽略我们手动选择的内容并始终下载最新版本。我可以理解它是这样做的,因为该DownloadBuildArtifact@0步骤告诉我们使用latestFromBranch构建版本来下载。

我的问题:我们如何手动选择资源构建工件并在 YAML 管道中进一步使用所选版本?理想情况下,如果您不进行手动运行/选择,则默认情况下它应该只使用工件的最新版本。

下面是我们的 YAML 管道的摘录:

name: pipelineB

resources:
  pipelines:

  - pipeline: pipelineA
    source: pipelineA
    branch: master
    trigger:
      branches:
        - master

steps:

  - task: DownloadBuildArtifacts@0
    name: 
    displayName: 'Download pipelineA artifact'
    inputs:
      buildtype: specific
      project: ourProjectName
      pipeline: pipelineA
      branchName: refs/heads/master
      buildVersionToDownload: latestFromBranch
      downloadType: specific
      downloadPath: $(Pipeline.Workspace)
Run Code Online (Sandbox Code Playgroud)

基于@Krzysztof Madej 答案的工作解决方案。仅对于需要更改DownloadBuildArtifacts@0字段的步骤 ,并且需要引入引用资源的新字段。buildVersionToDownloadspecificbuildIdpipelineA

steps:

  - task: DownloadBuildArtifacts@0
    name: 
    displayName: 'Download pipelineA artifact'
    inputs:
      buildtype: specific
      project: ourProjectName
      pipeline: pipelineA
      branchName: refs/heads/master
      buildVersionToDownload: 'specific'
      downloadType: specific
      buildId: '$(resources.pipeline.pipelineA.runID)'
      downloadPath: $(Pipeline.Workspace)
Run Code Online (Sandbox Code Playgroud)

Krz*_*tof 6

请更改buildVersionToDownloadspecific然后使用buildId: '$(resources.pipeline.hadar.runID)'

  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'specific'
      project: '4fa6b279-3db9-4cb0-aab8-e06c2ad550b2'
      pipeline: '72'
      branchName: 'refs/heads/master'
      buildVersionToDownload: 'specific'
      downloadType: 'single'
      downloadPath: '$(Pipeline.Workspace)'
      artifactName: 'drop'
      buildId: '$(resources.pipeline.hadar.runID)'
Run Code Online (Sandbox Code Playgroud)

您可以在此处检查管道资源的可用变量

resources.pipeline.<Alias>.projectName
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID
Run Code Online (Sandbox Code Playgroud)

我又查了一下,很简单

  - download: pipelineA
Run Code Online (Sandbox Code Playgroud)

如上面的代码一样工作。