问题标签 [parallel-builds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse-cdt - Eclipse 中的并行构建发生冲突
我在单独的工作区中导入了两个 C++ Eclipse 项目(每个都指向不同的版本代码沙箱)。我在不同的机器上启动了两个并行的 Eclipse 会话,然后想要并行构建这两个项目。每个工作区中只打开一个项目,这是我要在相应会话中构建的项目。但似乎一旦我启动一个项目的构建,第一个项目的另一个正在进行的构建就开始指向第二个项目的源目录:即当我开始在 sandbox2 中构建文件时,而构建 sandbox1正在进行中,sandbox1 的日志构建会立即显示 sandbox2 中文件的源文件路径,反之亦然。
是什么导致了这种行为,有没有办法在不相互影响的情况下并行运行两个构建。
谢谢,
洛朗
dependencies - 为并行构建调试 CMake/Make 依赖项
我管理一个复杂的 C++ 项目,它的构建定义被写入,CMake
构建本身是通过调用make
. 源代码树由许多模块组成,具有高度的可并行性。
线性构建总是成功的,而并行构建大多数时候都是成功的。当在这样的构建过程中遇到依赖问题时,我通常会去修复它,但我想以编程方式测试依赖关系,而不是在问题发生时修复它们。
理想的解决方案是遍历所有依赖CMake
项并修复它们,但这在实践中并不总是可行的,因为我们大量使用自定义宏来处理特定于我们的源树的某种依赖项(我无法详细说明, 对不起)。因此,我正在考虑以不同的方式(并且可能有效地)解决问题,尝试尽可能多地重用标准工具。
Make
我的第一个想法是在作业调度中注入某种“随机性” ,因此构建机器可以通过重建树来无限期地尝试不同的编译路径,直到遇到故障。然而,另一个问题(此处)指出,此功能在Make
.所以我尝试了另一种解决方案:我创建了一个包装脚本,
g++
它会休眠几秒钟,以在作业调度程序$RANDOM
中带来一些噪音。Make
当然,这种解决方案的缺点是增加了编译时间。
然而,这种部分解决方案有一个根本性的缺陷:如果发现问题,则证明缺少依赖项,但如果没有产生错误,则无法证明所有依赖项都是正确的。
你怎么看?我怎样才能实现我的目标?我更喜欢重用标准工具并且可以应用于广泛受众的解决方案。
谢谢。
maven - Maven聚合POM和并行构建
在非并行构建期间,最后构建聚合 POM,前提是它与其子模块之间没有父子关系(如果我错了,请纠正我)。
在并行构建期间是否保留?我可以假设根 POM 是在其所有子模块都构建后构建的吗?根据构建日志,答案似乎是“否”,但也许我遗漏了一些东西。
如果答案是“否”,我如何确保最后构建聚合 POM?例如,我想在构建所有子模块(并行构建)之后运行程序集插件?当然,我可以运行单独的“mvn -N assembly:assembly”命令来组装构建的东西,但是在常规构建期间有没有办法做到这一点?
java - nbm-maven-plugin 是否可以安全地用于 maven 并行构建?
我有一个使用 nbm-maven-plugin 的多模块项目。我目前正在测试 maven 3 的并行构建功能。对结果非常满意,因为它将速度提高了近 60% :) 问题是,它似乎还没有被标记为线程安全。
我尝试使用最新版本 3.10.1,但仍然收到警告。跟踪器中也没有记录关于此的问题(想创建问题但我似乎无法注册?)。
所以我的问题是,它们可以安全使用吗?到目前为止我可以成功构建,但我认为构建成功不会符合 nbm-maven-plugin 的线程安全性。
ubuntu - 设置 make 总是同时做 8 个工作
有没有办法将make设置为始终同时执行8个作业,类似于'make -j 8',但是以永久的方式,即使在计算机重新启动之间也是如此?
也许是一些环境变量?我正在使用 Ubuntu。
ubuntu - 在 MAKEFLAGS 中设置 -j8 是否会导致递归 make 出现问题?
我问了一个关于全局设置'-j8'标志的问题,答案建议设置MAKEFLAGS="-j8"
为/etc/environment
,但他们说这可能是递归make的问题。
但是,GNU 文档说这-j8
将以一种特殊的方式处理,并且不会传递给 make 的递归调用:
'-j' 选项是一种特殊情况(请参阅并行执行)。如果您将其设置为某个数值“N”并且您的操作系统支持它(大多数 UNIX 系统都支持;其他通常不会),则父 make 和所有子 make 将进行通信以确保只有 'N ' 作业在它们之间同时运行。请注意,任何标记为递归的作业(请参阅而不是执行配方)不计入总作业数(否则我们可能会运行“N”个子制作并且没有剩余的插槽用于任何实际工作!)
那么设置是否MAKEFLAGS="-j8"
有/etc/environment
问题?
jenkins - 具有并行构建的 Jenkins
我有一个小型 Jenkins 虚拟机在为我们的商店运行,它时刻关注着大约十几个 github 项目。它目前配置了 3 个执行器(它只是一个 4-cpu 的 VM),并且可以愉快地运行。
但是,其中 2 个项目非常大(90 分钟的编译和测试周期)。在工作站上,我们通常使用“make -j6”或 Ninja 来加快速度,而且效果非常好。我想在 Jenkins 上执行此操作,但我找不到让单个作业消耗多个执行器的方法。
我想要的是能够配置多个 Executor 分配给一个作业,这样我就不会同时运行这两个怪物作业,但仍然将所有其他较小的作业留给一个-executor 每个,以便它们可以并行运行。
有任何想法吗?
parallel-builds - 我们可以为并行构建选择不同配置(发布或调试)的特定构建代理吗
我正在使用 Parallel Template(来自 Jim Lamb's Blog)为两个配置运行构建
- 一个用于“发布”
- 第二个“调试”
我的控制器上有两个代理。每次我运行此构建时,它都会从控制器中选择可用代理并随机选择两个构建的代理。有时“发布”在代理 1 上运行,“调试”在代理 2 上运行,有时“调试”在代理 1 上运行,“发布”在代理 2 上运行。
我想控制这个活动。
有没有办法为这两种配置选择特定的代理......??? 例如.... 假设我有一个控制器(控制器 1)和两个代理(代理 1 和代理 2)。
我想为“发布”配置选择代理 1,为“调试”配置选择代理 2。
c# - 如何在 Visual Studio 2013 中进行并行构建?
根据这篇 MSDN 文章:
http://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx
一个“可以为 C++ 和 C# 项目运行多处理器构建”。使用 IDE。我的解决方案只包含 C# 项目,但是当我执行“构建解决方案”时,我只能在任务管理器中看到一个 MSBuild 进程和一个 csc.exe 进程。
在工具 -> 选项 -> 项目和解决方案 -> 构建和运行中,我将“并行项目构建的最大数量”设置为 4,并且我的计算机有 4 个内核。
是否可以设置 VS2013 来并行构建我的解决方案项目?
maven - 如何在使用 maven -T 选项时为每个模块获取单独的日志文件
我的项目结构如下:
我有三个独立的组件。我正在使用 maven 线程选项并行构建它们,即mvn -T 4C install | tee log.txt
.
当我在父 pom 目录中发出上述命令时,它开始并行构建所有三个组件,但我最终以随机顺序在单个文件中获取所有组件的日志,并且在出现错误时变得难以调试未来组件的数量将会增加。
那么在这种情况下有没有办法分别获取每个组件的日志?