yarn install 消耗了 TeamCity 和 Jenkins 上的所有内存
yarn install consumes all memory on TeamCity and Jenkins
不过,我真的很想让 yarn 与 TeamCity 或 Jenkins 一起工作
yarn install
消耗了我所有的构建服务器的 cpu 和内存,即使
一个很小的 npm 项目。知道为什么吗?
总结
yarn install
,当 TeamCity 或 Jenkins 运行 时,消耗最多 CPU/memory,永远不会完成
- 运行ning
yarn install
从构建服务器上的命令行工作(几秒钟后完成)
npm install
在 TeamCity/Jenkins 的 运行 几秒钟内完成
- 构建服务器:Windows Server 2012,2 核,4GB 内存
- yarn 版本 1.6.0
- 詹金斯版本 2.107.2
- TeamCity 版本 2017.2.3
- 已尝试 Node.js 版本 8.11.1 和 9.11.1
详情
步骤:
创建一个小型 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 的问题。
不过,我真的很想让 yarn 与 TeamCity 或 Jenkins 一起工作
yarn install
消耗了我所有的构建服务器的 cpu 和内存,即使
一个很小的 npm 项目。知道为什么吗?
总结
yarn install
,当 TeamCity 或 Jenkins 运行 时,消耗最多 CPU/memory,永远不会完成- 运行ning
yarn install
从构建服务器上的命令行工作(几秒钟后完成) npm install
在 TeamCity/Jenkins 的 运行 几秒钟内完成
- 构建服务器:Windows Server 2012,2 核,4GB 内存
- yarn 版本 1.6.0
- 詹金斯版本 2.107.2
- TeamCity 版本 2017.2.3
- 已尝试 Node.js 版本 8.11.1 和 9.11.1
详情
步骤:
创建一个小型 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 的问题。