繁体   English   中英

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

[英]Running a YAML build pipeline manually with artifacts selected from resources in the UI are ignored

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

运行管道

资源

流水线A运行

如果我们然后从管道运行的pipelineA和运行pipelineB 1.2.43-10019-master选择较旧的(例如1.2.43-10019-master )构建,并且我们查看日志,我们会发现它忽略了我们手动选择的内容并始终下载最新版本。 我可以理解这样做是因为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)

基于@Krzysztof Madej 回答的工作解决方案。 仅对于步骤DownloadBuildArtifacts@0字段buildVersionToDownload需要更改为specific并且需要引入一个新字段buildId引用pipelineA资源。

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)

请将buildVersionToDownload更改为specific ,然后使用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)'

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

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

我又检查了一遍,很简单

  - download: pipelineA

作为上面的代码工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM