【问题标题】:How to set a JVM option in Jenkins globally for every job?如何在 Jenkins 中为每个作业全局设置 JVM 选项?
【发布时间】:2012-10-07 11:41:46
【问题描述】:

我最近安装了一个新的 JDK (1.7u9),我得到了一些非常奇怪的VerifyErrors。 In a thread 我发现如果我使用-XX:-UseSplitVerifier 魔法开关进行编译,它可以帮助我。

我想做的是在 Jenkins 中全局设置这个 Java 选项,但没有找到任何配置。有人可以帮我解决这个问题吗?

我能想到的最接近的方法是通过 Maven 设置参数,但我必须为每个项目配置都这样做 - 我想避免这种情况。

提前致谢。

【问题讨论】:

  • 您在哪个应用服务器上部署 Jenkins? Tomcat、GF 还是其他?

标签: java maven configuration jenkins jvm-arguments


【解决方案1】:

在 Windows 上,Jenkins 主目录中有一个 jenkins.xml。只需在 arguments 标签下添加所需的 JVM 选项:

<arguments>
    -Xrs -Xmx256m -XX:-UseSplitVerifier 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" --httpPort=8080
</arguments>

对于大多数 Linux 发行版,修改 JENKINS_ARGS 内部文件: /etc/default/jenkins(或 jenkins-oc)

对于 CentOS,修改 JENKINS_JAVA_OPTIONS 里面的文件: /etc/sysconfig/jenkins(或 jenkins-oc)

【讨论】:

    【解决方案2】:

    显然,在 Jenkins 中设置系统范围的 JVM 属性的唯一方法是使用 Groovy Script

    在 Jenkins 主页中创建一个 init.groovy.d 并在其中放置一个 groovy 文件 (load-properties.groovy)。在 Groovy 脚本中,以编程方式设置系统属性(详见 link above):

           props.each { key, value ->
            System.setProperty(key, value)
    

    上述解决方案节省了我的时间,因为我需要在 SCM 结帐期间禁用 jsse.enableSNIExtension,它应该可用于 SVN 插件,而不是 Maven。

    有一个带有jdks/jdk/properties XML 标记的config.xml 文件,但它没有记录。

    【讨论】:

    • config.xml 会很好,但即使在今天我也找不到它的文档。我会尝试 groovy 方法。
    【解决方案3】:

    在主菜单项Manage Jenkins->Configure System 下,您可以在Global MAVEN_OPTS 的框中设置它。

    您是否希望为 Jenkins 容器本身或仅在其中运行的作业打开该选项有点不清楚,但如果后者并且您只运行 maven 作业,我会这样做。

    干杯,

    【讨论】:

    • 谢谢,我相信这将是解决方案。我想在 Jenkins 中为不同的 JDK 设置 JVM 参数,但找不到这样的设置。不过,我可以为 Maven 全局定义,这就够了。
    • 这解决了我在运行 Jenkins 1.514 和 JDK 1.6.0_45 的 OSX 10.8.3 上遇到的问题
    • 似乎是唯一对我有用的东西。这个很容易出错。
    【解决方案4】:

    如果您将 Jenkins 部署到 Tomcat 或 Glassfish,我建议您进一步配置如下:-

    雄猫

    设置名为CATALINA_OPTS的环境变量,例如

    SET CATALINA_OPTS="-XX:-UseSplitVerifier"
    EXPORT CATALINA_OPTS
    

    玻璃鱼

    编辑 [your_domain]/config/domain.xml

    <java-config ....>
        ....
        <jvm-options>-XX:-UseSplitVerifier</jvm-options>
    </java-config>
    

    无论如何,如果您将其部署到另一个应用程序服务器,请参阅您的应用程序服务器管理员指南以配置更多 JVM 选项。

    更新:

    如果您只想将此 JVM 选项应用到 Maven 项目,请设置名为 MAVEN_OPTS 的环境变量,例如

    SET MAVEN_OPTS="-XX:-UseSplitVerifier"
    export MAVEN_OPTS
    

    我希望这会有所帮助。

    问候,

    查理·Ch.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2017-06-16
      • 2019-02-05
      • 2016-02-20
      • 1970-01-01
      相关资源
      最近更新 更多