【发布时间】:2022-12-07 19:55:16
【问题描述】:
我们有一个包含 10 多个 Angular 应用程序和 150 多个库的 NX monorepo。我们的 CI 服务器正在使用 Ubuntu 在 docker 容器中运行所有构建。我们正在所有构建代理之间存储和共享计算缓存。我们现在使用 nx affected:apps 来检测构建需要运行哪些应用程序,并使用 nx affected:libs 为每个应用程序创建受影响的库列表。这种方法使我们能够运行分布式构建。我们现在为每个应用程序及其依赖库制定了专门的构建计划。
因此,我们正在使用受影响的 nx、计算缓存和分布式构建,但由于我们需要运行大量测试,我们仍在为构建持续时间过长而苦苦挣扎。
我们采取的下一步是使用 nx run-many 并行运行这些测试,但这对我们不起作用。即使有 2 个并行进程,我们也会看到以下错误:
另一个 ID 为 ... 的进程当前正在运行 ngcc。最多等待 250 秒才能完成。
我们已经尝试了所有解决方法,但均未成功 如果我在同一个 docker 容器中运行相同的命令但在我的本地机器上运行,一切正常。
因此,这种方法并没有减少构建时间,而是增加了总构建持续时间(如果我们想运行 4 个并行进程,我们需要在测试实际开始之前等待 16 分钟)。
任何想法为什么会这样?
【问题讨论】: