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

时间:2018-04-22 00:14:38

标签: node.js jenkins npm teamcity yarnpkg

但是,我真的很想让TeamCity和Jenkins合作 yarn install消耗我所有构建服务器的cpu&记忆,即使有 一个小小的npm项目。知道为什么吗?

摘要

  • yarn install,当由TeamCity或Jenkins运行时,消耗大部分CPU /内存,永远不会完成
  • 从构建服务器上的命令行运行yarn install工作(几秒钟后完成)
  • npm install在TeamCity / Jenkins运行的几秒钟内完成
  • 构建服务器:Windows Server 2012,2核,4GB内存
  • 纱线版本​​1.6.0
  • Jenkins版本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,使用单个命令yarn install设置Jenkins或TeamCity构建。

构建永远不会完成,最后一行控制台输出:yarn install v1.6.0。 此时,Node.js进程占用了大部分CPU和内存 建造机器。将命令更改为npm install可使其成功运行。

由于Jenkins和TeamCity的共同点,似乎问题就在于此 从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$1.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)

1 个答案:

答案 0 :(得分:1)

我从原始问题中留下了一些重要信息 - 我还使用了纱线的离线镜像,它存储在网络驱动器上。事实证明,TeamCity Windows服务无法访问网络驱动器:https://confluence.jetbrains.com/display/TCD10/Known+Issues#KnownIssues-AgentrunningasWindowsServiceLimitations

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