【问题标题】:Efficient way to share node_modules between different Azure Pipeline jobs在不同 Azure Pipeline 作业之间共享 node_modules 的有效方法
【发布时间】:2020-07-23 12:49:26
【问题描述】:

我的项目是一个使用yarn管理npm依赖的node项目。

在我的 CI azure 管道中,我有多个作业,所有这些作业都需要运行 yarn 来安装 npm 依赖项。因为依赖的数量比较多,安装完成大概需要4分钟。

我曾尝试使用管道工件在它们之间共享 node_modules 文件夹,但在作业之间发布和下载工件花费了相同的时间(甚至更慢)。

我想知道在这种情况下是否有一种在管道作业之间共享大数据的有效方法?

【问题讨论】:

    标签: azure-pipelines azure-pipelines-yaml


    【解决方案1】:

    最简单的方法是在一个作业中运行任务。或者您可以选择在同一个self-hosted agent 中运行作业,这样您就不需要在同一个环境中安装重复的依赖项。

    如果你有特定的理由使用多个工作,你也可以考虑pipeline caching。类似例子:link1,link2

    【讨论】:

    • 谢谢。我不得不将它们分成多个作业的原因是我想并行一些任务。目前,它们都在一个工作中连续运行,并且花费的时间太长。我目前正在使用管道缓存,但它并没有太大帮助,因为下载缓存内容仍然需要很多时间。我们有一个自托管代理池。如何请求作业在特定代理上运行,以便作业可以在同一个代理上运行并且仍然可以并行运行?这甚至可能吗?
    【解决方案2】:

    您没有指定使用自托管或 MS-Hosted 的代理类型。如果您不反对使用自托管代理,我建议您创建一个具有必要 NPM 依赖项的代理。您可以使用传统的VMDocker 来执行此操作。除此之外,我相信您唯一的选择是在同一个作业中运行所有需要这些依赖项的任务,或者并行运行您的作业以弥补安装 NPM 依赖项所浪费的时间。如果您使用免费版本的 MS-Hosted 代理,则只有在您付费的情况下才能使用并行作业选项。

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 2022-08-06
      • 2020-06-16
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多