npm - Azure DevOps Pipelines - npm 任务非常慢 - 1200 个包需要 13 分钟
问题描述
我有一个在 Azure DevOps 中非常慢的 Npm 任务:
- task: Npm@1
inputs:
command: 'custom'
customCommand: 'install --prefer-offline --no-audit --unsafe-perm=true'
workingDir: $(Build.SourcesDirectory)/src/xxx.WebHost/ClientApp
condition: ne(variables.NPM_CACHE_RESTORED, 'true')
这是一个非常简单的任务。--prefer-offline --no-audit --unsafe-prem=true
大约需要2分钟的时间。
added 1236 packages from 1289 contributors in 791.318s
那是大约13分钟。本地需要几分钟。它在本地更快,但这太疯狂了。我已经实现了缓存来帮助以下构建。这些不能为不同的分支共享...
这是托管在East US 2
.
我在欧洲有其他账户,运行速度更快:
added 1460 packages from 1339 contributors and audited 1479 packages in 39.661s
真的West Europe
那么快吗?
我在这里做的事情真的很愚蠢还是很npm
慢?有没有破损
我知道有替代方案npm
。我只是想让 100% 确定这不是我做错的事情。
更新 1:
刚刚发现这可能是有用的信息。我们正在运行:
pool:
vmImage: ubuntu-latest
解决方案
我经历过它在运行和代理之间有所不同。
在当前的项目中,我们在欧洲西部的 azure 运行构建管道,并且相同的构建可能需要 5 到 25 分钟,具体取决于运行构建的代理。
我们这样做: 设置节点版本 升级 npm NPM 安装(包比你少) 使用 npm 构建(我们在一个 monorepo 中构建 5 个不同的包) linting
我们目前正在使用最新的 Windows,它们可能会有很大差异。大多数情况下,我们的构建需要 7-10 分钟,但有时如果我们得到一个快速代理,它们会在 5 分钟内完成。有时它可以在同一构建的另一个代理上运行 20 分钟。
推荐阅读
- rust - 如何调用具有多个签名者的 solana 程序
- swift - NSToolbarItem 图像在运行的应用程序中看起来很糟糕,但在界面生成器中却没有
- ibmhttpserver - 进行后端调用时由 IHS 验证到期日期
- javascript - Vue.js 中的原始表达式:动态计算类中的错误
- java - 通过 RestTemplate 使用 Spring Paged 响应会给出不存在的错误
- tensorflow - InvalidArgumentError:尝试读取字符串时数据太短 [[{{node DecodeWav}}]] [Op:IteratorGetNext]
- database - TDengine 无法删除节点,总是显示正在删除
- c - 当本地构建成功时,调试 Azure Pipeline 失败构建的正确方法是什么?
- android - BMI Calculator in Kotlin
- c++ - 未定义的引用,但链接的共享库包含它