3

我有一个 Jenkins 构建,构建的一个步骤是调用 bat 文件的 Windows 批处理命令步骤。

批处理文件包含以下创建 JVM 的命令

SET JAVA_OPTS=-Xmx4g -Xms512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m

call sbt %cmd% "run %db% %dbuser% %dbpass% %df% %dfport% %dfuser% %dfpass% %epsg% %starttime%"

如果我如上所述使用 -Xmx4g ,则 Jenkins 中的命令会失败

Invalid maximum heap size: -Xmx4g The specified size exceeds the maximum representable size.

但是,如果我在命令提示符下在从属机器上在 Jenkins 之外运行相同的批处理文件,我完全没有问题。

如果我在 Jenkins 下使用 -Xmx2g 运行命令,那么它会耗尽内存,因为该命令的堆大小太小,但至少它在没有无效最大堆大小的情况下运行。

如何防止 Jenkins 限制从该构建步骤运行的 JVM?

我尝试了以下方法,但尚未找到允许此构建步骤完成的解决方案:

  1. 更改 Jenkins 服务器上的堆大小(尽管它不是有问题的服务器端 JVM)
  2. 更改分配给运行构建的从属设备的堆大小(使用 Jenkins 服务器中节点配置页面上的 JVM 选项)

还有其他建议吗?

4

1 回答 1

1

我没有使用 64 位版本的 JAVA - 我将从站上的 JAVA 版本更改为 64 位版本,确保 Jenkins 在代理和启动 JVM 的步骤中都使用此版本,现在我没有我报告的问题。

于 2015-08-13T14:24:42.063 回答