ng build --configuration 生产在 Jenkins 上需要 30 多分钟,但在本地需要 5-6 分钟

Posted

技术标签:

【中文标题】ng build --configuration 生产在 Jenkins 上需要 30 多分钟,但在本地需要 5-6 分钟【英文标题】:ng build --configuration production takes 30+ mins on Jenkins but 5-6 mins on local 【发布时间】:2021-07-25 16:05:06 【问题描述】:

我在 Jenkins 服务器上构建了一个 Angular 应用程序,该应用程序运行速度非常慢(需要 30 多分钟)。使用的命令:ng build --configuration production 但是,当我在本地 Windows 机器上运行相同的命令时,它会在大约 5 分钟内完成。 我试过设置NODE_OPTIONS=--max-old-space-size=8192,但似乎没有任何影响。

我认为问题可能在于 ng build 没有利用所有服务器内核,但不确定。

Angular 版本:

Angular CLI: 9.1.15
Node: 10.22.1
OS: win32 x64

Angular: 9.1.13
... animations, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router
Ivy Workspace: Yes

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.15
@angular-devkit/build-angular     0.901.15
@angular-devkit/build-optimizer   0.901.15
@angular-devkit/build-webpack     0.901.15
@angular-devkit/core              9.1.15
@angular-devkit/schematics        9.1.15
@angular/cdk                      9.2.4
@angular/cli                      9.1.15
@ngtools/webpack                  9.1.15
@schematics/angular               9.1.15
@schematics/update                0.901.15
rxjs                              6.6.7
typescript                        3.8.3
webpack                           4.42.0

【问题讨论】:

可能是不同的硬件。您的本地环境是否有 SSD 驱动器,而不是安装 jenkins 的位置? 尝试删除本地机器中的 node_module 目录并构建它。将该时间与 Jenkins 构建时间进行比较。我之所以这么说,通常是在构建机器中从头开始构建,但在本地机器中,东西会被缓存,因此后续构建会更快。 是的,我的本地机器上有 SSD。 我删除了 node_modules,然后再次运行 prod 构建,它比 jenkins 构建快得多 【参考方案1】:

添加更多内核不会减少构建时间。请记住,角度构建器(angular-devkit)是使用 Node.js 构建的,因此使用单线程。如果您想减少构建时间,请将 GPU 添加到您的服务器。可能您的本地机器有 GPU,这就是它需要更短时间的原因。

【讨论】:

GPU 如何帮助构建 Angular 项目? 我无法向该服务器添加 GPU ...节点中是否有配置以使用多个内核?已尝试增加内存,有时会有所改善,但大多数时候速度很慢

以上是关于ng build --configuration 生产在 Jenkins 上需要 30 多分钟,但在本地需要 5-6 分钟的主要内容,如果未能解决你的问题,请参考以下文章

ionic build error: 运行子进程 ng 时发生错误

在 ng build angular 中运行严格编译

typescript ng build ssr

手动重启 `ng build --watch` 或 `ng serve`

如何在使用ng build而不是ng serve时运行webpack?

ng serve 和 ng build 的 cli config 中的不同资产 [Angular 5]