【问题标题】:Download artifact contents from another pipeline build从另一个管道构建下载工件内容
【发布时间】:2020-05-31 01:22:02
【问题描述】:

我有两个 azure devops 管道如下:

  • 第一个创建一个名为“AncientArtifact-1.2.0.$(Build.BuildId)”的工件。
  • 第二个是尝试通过Download Build Artifacts任务来使用这个工件,配置如下:

这会在第二个管道构建的 $(CustomDestinationFolder) 内创建一个名为“AncientArtifact-1.2.0.12345”的文件夹(第一个管道最近的 BuildId=12345)。

我想将上述文件夹重命名为“ancient”之类的名称,并将其移动到第二个管道构建中的另一个目录,以包含在第二个管道工件中。

我尝试过使用copy files 任务,但问题是我不知道下载的工件文件夹的名称,因此我只能将其父 $(CustomDestinationFolder) 指定为源文件夹,因此我的目标文件夹看起来会有所不同像 $(destinationFolder)\AncientArtifact-1.2.0.12345*。 使用 flattenFolders 选项会展平所有内容,这不是我想要的。

想到了一些方法:

  • 从工件名称中删除 $(Build.BuildId)。这样我就知道下载的工件将具有的确切名称。问题是我想保留它。
  • 第二个管道中的自定义脚本将列出 $(CustomDestinationFolder) 中的文件夹,获取工件文件夹的名称,将其重命名为硬编码的“古老”名称。感觉很hackish。

有没有更好的方法来处理这个问题?

【问题讨论】:

  • 请问这个状态怎么样?下面的解决方法呢?免费分享您的难题是什么:-)
  • 嗨@Alexandru,您能否添加代码片段以设置DownloadBuildArtifacts 的引用名称。我已经阅读了docscode,但我找不到相关部分。谢谢

标签: azure azure-devops azure-devops-extensions


【解决方案1】:

您也许可以通过复制文件任务和通配符沿着一条路线走下去,以获得您想要的东西。

但是,如果您最终想要重命名工件文件夹以包含在第二个管道中,我会在您下载工件文件夹后继续重命名它。

如果它简单地解决了问题并且易于理解,我不会称之为hackish。

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'specific'
    project: 'your-project'
    pipeline: 'your-pipeline'
    buildVersionToDownload: 'latest'
    downloadType: 'specific'
    downloadPath: '$(System.ArtifactsDirectory)\customLocation'

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: Get-ChildItem $(System.ArtifactsDirectory)\customLocation | Rename-Item -NewName 'ancient'

【讨论】:

    【解决方案2】:

    与 Eric 不同,这里我只是按照您的 idea1,在工件名称中指定 $(Build.buildId)

    如果您将pipeline2system.debug 设置为true,您将看到任务DownloadBuildArtifacts 本身会根据使用的不同构建生成一个环境变量:BuildNumber

    利用它,设置reference name of DownloadBuildArtifacts task: ref

    然后,您可以在后续步骤中调用此变量以获取 buildid 值:$(ref.BuildNumber)

    同时,您可以通过保持工件名称包含$(Build.BuildId) 值来使用复制文件任务。

    【讨论】:

    • 嗨@Merlin Liang - 您能否添加代码片段以设置DownloadBuildArtifacts 的引用名称。我已经阅读了docscode,但我找不到相关部分。谢谢。
    • @ObiWan-PallavJha 请向下滚动下载构建工件任务配置页面,您将看到输出变量。单击它,然后您应该可以在空白处定义您的参考名称。由于这是存在于所有管道任务中的通用参数,因此我们没有在所有任务的文档中提及这些参数。我们只是在这里记录它:docs.microsoft.com/en-us/azure/devops/pipelines/process/…
    • 梁梅林 - 感谢您的帮助!我为这个问题创建了一个 Github 问题,并在那里添加了答案。这是link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多