【问题标题】:Download Artifact from other pipeline in Multistage YAML从 Multistage YAML 中的其他管道下载工件
【发布时间】:2023-04-01 02:22:01
【问题描述】:

在 azure devops 中,我正在尝试通过 yaml 创建多阶段发布定义。通过经典编辑器完成构建,并将工件上传到 azure 管道。所以我想访问一个特定的工件进行部署

- task: DownloadPipelineArtifact@2 displayName: 'Download Pipeline Artifact' inputs: buildType: specific project: 'vvxxxxxx-vxxv-xxxv-vxxx-xxxxxxvvxxvv' definition: 5 buildVersionToDownload: specific pipelineId: 'SSE_XXXXXXXXXXXXXXXXXX_Auto-import_dev_20200423.4' artifactName: Service targetPath: '$(Pipeline.Workspace)'

当我使用任务“下载管道工件”通过经典版本尝试它时它是成功的,但是当我通过 yaml 尝试它时它失败并出现错误 "##[error]Run Id is not valid: SSE_XXXXXXXXXXXXXXXXXX_Auto-import_dev_20200423.4 " 如果有任何其他方法可以从管道中获取工件会有所帮助,而且我也想让它动态化,而不是硬编码 pipelineId。

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    在 Multistage YAML 中从其他管道下载 Artifact

    pipelineId 的值应该是您要下载的构建管道的 ID,而不是构建管道的名称/标题。

    找到您要下载的构建管道,点击您要下载的构建记录,您可以在浏览器的网址栏中看到它:

    我也不想硬编码 pipelineId 我想让它动态为 好吧。

    如果您不想在 YAML 定义中硬编码 pipelineId/runid,您可以考虑传递队列变量作为解决方法。

    例如:

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

    在上面的定义中,buildid是变量,你可以在排队时配置它的值:

    当您要选择另一个runId时,不需要您对管道进行任何修改,只需在排队时传递值即可。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多