azure-devops - 根据标签从分支下载最新的管道工件

标签 azure-devops azure-pipelines azure-pipelines-yaml azure-pipelines-tasks

我正在尝试从当前构建管道和分支下载给定标签的最新可用工件,但出现以下错误。

##[error]No builds currently exist in the pipeline definition supplied.

这是一个用于自动化测试的 3 阶段管道,包括构建、部署和运行测试阶段。在运行测试阶段,我试图在构建阶段下载最近可用的工件,它可能是这次运行,也可能是更早的运行。

如果我将标签选项排除在外,它将尝试从上次可用运行中获取它,但当时可能尚未创建此工件,因此我使用标签来尝试过滤它。

    - task: DownloadPipelineArtifact@2
      displayName: 'Download Latest DLLs'
      inputs:
        source: 'specific'
        project: $(System.TeamProjectId)
        pipeline: $(System.DefinitionId)            
        runVersion: 'latestFromBranch'
        runBranch: $(Build.SourceBranch)
        tags: 'myBuildTag'
        allowPartiallySucceededBuilds: true
        artifact: myArtifactName            
        patterns: '**/IntegrationTests/**/*'                      
        path: '$(Agent.TempDirectory)\myArtifactName'
      continueOnError: true

任何帮助将不胜感激

最佳答案

Downloading latest Pipeline Artifact from branch based on Tag

我可以自己重现这个问题。

我认为这是带有标签的多个阶段中的 DownloadPipelineArtifact 任务的问题。

经过多方调查,我发现如果我们在多阶段使用DownloadPipelineArtifact任务:

- task: DownloadPipelineArtifact@2
  displayName: 'Download Latest DLLs'
  inputs:
    source: 'specific'
    project: $(System.TeamProjectId)
    pipeline: $(System.DefinitionId)            
    runVersion: 'latestFromBranch'
    runBranch: $(Build.SourceBranch)

它将尝试下载指定分支上的最新版本。由于我们使用多阶段,构建阶段在当前管道中成功,此任务 DownloadPipelineArtifact 将从之前的 build 阶段下载工件。不过此时还没有添加tag,需要在pipeline完成后添加:

enter image description here

在这种情况下,我们将收到错误信息No builds currently exist in the pipeline definition supplied.

因为构建阶段生成工件的当前管道没有用标签标记,所以它的标签是空的。

这个问题的关键是多阶段yaml在同一个管道中进行构建和测试。它不同于经典的流水线。管道完成后,我们不使用任务 DownloadPipelineArtifact

我在 azure devops 任务上提交了这个问题:https://github.com/microsoft/azure-pipelines-tasks/issues/13101 .您可以查看此票以获取反馈。

希望这对您有所帮助。

关于azure-devops - 根据标签从分支下载最新的管道工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62294343/

相关文章:

azure - 如何避免在环境中的 Azure Agent for Pipeline 中创建新文件夹

下载 TFS 容器后,VPN 后面的 Docker 无法启动

azure - 如何使用 prependpath 在 azure-pipeline 中设置路径

html - 在 Azure DevOps 中发布 html 文件

azure-devops - Azure DevOps 发布管道在 kubectl 命令上失败

azure-devops - 无法在 Azure DevOps Pipelines 的命令行脚本任务中克隆 git 存储库

azure - ADF CI 构建错误 : Command failed: node/home/shaadmin/myagent/_work/5/s/adf/build/downloads/main. js 验证

azure-devops - Azure DevOps Pipeline 日志,将数字 1 标记为 ***

azure - Mac M1 : Error: Protocol error (Target. setDiscoverTargets):启动 aws-azure-login 时目标关闭

github - Azure DevOps - 如何为 GitHub 上的任何分支共享一个状态徽章图像?