1

有时,由 Jenkins (1.461) 完成的构建会在中间的某个随机位置停止。这些构建是对 Visual Studio 2008 SP1 的 devenv.com 的手动脚本调用,主要用于 C++ 代码。Visual Studio 不会发出错误消息;devenv 日志中的最后一条消息是正在构建的一些随机文件。由于依赖于某些构建输出的构建后 Windows 批处理命令,Jenkins 构建失败。这种情况很少发生(大约 15 个构建中的 1 个)。Jenkins 的错误日志在构建失败时没有显示任何异常。令人惊讶的是,它说构建成功,尽管它在其他任何地方都显示它失败。

这个问题是孤立给詹金斯的。在开发人员的办公桌上运行的相同构建脚本从未以这种方式失败。

Jenkins 节点是 32 位 Windows XP 机器。它们都有充足的可用磁盘空间。Jenkins 被配置为每个节点一次只运行一项作业。事件日志显示在构建停止时没有发生明显的坏事(例如,Visual Studio 崩溃)。

有没有人有任何想法可以解决这个问题?

4

2 回答 2

0

我不记得自己曾经遇到过 jenkins 的这个问题,但是我在 MSVC 2008 中经常遇到链接器崩溃。这对我来说几乎每天都会发生。如果是链接器崩溃,那么这可能是一种解释。(也许没有记录链接器崩溃?)

编辑:我们在 32 位 Win7 上使用 MSVC2008 SP1。我们在构建 c++ 解决方案时使用 MSBuild 3.5。

于 2012-05-10T16:43:56.880 回答
0

我们最终将随机构建失败与 Jenkins 节点上的注销事件相关联。这导致了这个JVM 错误/功能(Oracle Java 错误 ID 6871190),其中 Windows 中的注销事件会导致信号处理程序终止 JVM。您可以通过将 -Xrs 选项传递给 JVM 来禁用此行为(可能还有其他缺点),但该选项不会自动传播到子 Java 进程。

我们通过 -Xrs 来启动 Jenkins 本身,而 Jenkins 服务本身通过注销来生存。当前的假设是 Jenkins 构建过程的某些部分是通过另一个未使用 -Xrs 调用的 Java 子进程启动的。

于 2012-05-14T14:38:46.883 回答