【问题标题】:How to re-use artifacts from different pipeline in Azure如何在 Azure 中重用来自不同管道的工件
【发布时间】:2020-11-24 09:11:11
【问题描述】:

我在 2 个不同的存储库中有 2 个管道:

  • repo.git 中的 lib.yml 生成一个可重用的库工件 A(为此需要在不同节点上使用多个阶段),并且还有一个阶段在 A 生成后运行自动测试。
  • app.git 中的 app.yml 构建并测试需要 A 构建的应用程序。

在 app.yml 中,我想在不复制 lib.yml 的情况下集成 A。有人告诉我模板是一种解决方案,但我不太确定。 lib.yml 的多个阶段必须运行,然后我才能使用所需的工件。使用作业模板只会使两个管道复杂化并创建对管道内部的依赖。 app.yml 应该不知道 lib.yml 如何构建 A。

在查阅文档后,我认为管道资源更接近我的需要。但我不完全理解它是如何工作的。假设我们想要分支 B 上的 lib.yml 中的工件 A。

  1. app.yml 会使用分支 B 的最新可用工件 A,还是会在 B 上踢 lib.yml?

  2. 有没有办法告诉 app.yml:如果可用,将 lib.yml 的最新 A 用于分支 B,否则在 B 上运行 lib.yml 并等待 A 准备好?

【问题讨论】:

    标签: azure azure-devops azure-pipelines


    【解决方案1】:

    你,你是对的 - resource pipelines 应该为你做一份工作。

    要运行 app.yml,你应该有这样的东西:

    resources:
      pipelines:
      - pipeline: hadar
        source: kmadof.hadar
        trigger:
          branches:
            - B
    

    只使用:

    - download: hadar
    

    从分支 B 的管道中获取最新的工件。

    您还可以选择运行 app.yaml 手册的管道并选择工件:

    并且- download: hadar 也得到了正确的工件。

    所以

    1. app.yml 将使用分支 B 的最新可用工件 A。
    2. 如果您想 app.yaml 触发 lib.yaml,然后从 lib.yaml 获取工件,那么使用开箱即用的功能将很困难并且不可能。所以没有开箱即用的方式让 app.yaml 触发 un lib.yaml 并等待来自 lib.yaml 的工件。如果您的应用 yaml 将由资源管道触发器以外的其他触发器触发,它将使用分支 B 的最新可用工件 A。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多