在不同Azure管道作业之间共享node_modules的有效方法

时间:2020-07-23 12:49:26

标签: azure-pipelines azure-pipelines-yaml

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

在我的CI azure管道中,我有多个作业,所有这些作业都需要运行yarn来安装npm依赖项。由于依赖项的数量很大,因此安装它们大约需要4分钟。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

如果您有特定的原因要使用多个作业,也可以考虑使用pipeline caching。类似的示例:link1link2