我有一个 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?
我尝试了以下方法,但尚未找到允许此构建步骤完成的解决方案:
- 更改 Jenkins 服务器上的堆大小(尽管它不是有问题的服务器端 JVM)
- 更改分配给运行构建的从属设备的堆大小(使用 Jenkins 服务器中节点配置页面上的 JVM 选项)
还有其他建议吗?