yarn install 消耗了 TeamCity 和 Jenkins 上的所有内存

yarn install consumes all memory on TeamCity and Jenkins

不过,我真的很想让 yarn 与 TeamCity 或 Jenkins 一起工作 yarn install 消耗了我所有的构建服务器的 cpu 和内存,即使 一个很小的 ​​npm 项目。知道为什么吗?

总结

详情

步骤:

创建一个小型 npm 项目:

mkdir temp
cd temp
yarn init  # all defaults
yarn add dummy-module  # tiny test package

将此提交给 git,使用单个命令设置 Jenkins 或 TeamCity 构建 yarn install

构建从未完成,控制台输出的最后一行:yarn install v1.6.0。 此时,Node.js 进程正在消耗大部分 CPU 和内存 造机。将命令更改为 npm install 使其 运行 成功。

因为 Jenkins 和 TeamCity 很常见,所以问题似乎与 运行ning 子进程来自 java。我找不到任何迹象表明出了什么问题 在 TeamCity 或 Jenkins 日志中。中止 Jenkins 构建时, 我在 jenkins.err.log 中看到以下内容:

Apr 22, 2018 8:59:11 AM hudson.model.Run execute
INFO: master-cake #9 aborted
java.lang.InterruptedException
    at java.lang.ProcessImpl.waitFor(Unknown Source)
    at hudson.Proc$LocalProc.join(Proc.java:324)
    at hudson.tasks.CommandInterpreter.join(CommandInterpreter.java:155)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
    at hudson.tasks.BuildStepMonitor.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
    at hudson.model.Build$BuildExecution.build(Build.java:206)
    at hudson.model.Build$BuildExecution.doRun(Build.java:163)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
    at hudson.model.Run.execute(Run.java:1727)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)

我在原问题中遗漏了一些关键信息——我也在使用 yarn 的离线镜像,它存储在网络驱动器上。事实证明,TeamCity windows 服务无法访问网络驱动器:https://confluence.jetbrains.com/display/TCD10/Known+Issues#KnownIssues-AgentrunningasWindowsServiceLimitations

将 yarn 的离线镜像重新定位到本地目录解决了 TeamCity 和 Jenkins 的问题。