Как установить JVM-вариант в Jenkins на глобальном уровне для каждой работы?
Недавно я установил новый JDK (1.7u9), и у меня появился очень странный VerifyError
s. В потоке я обнаружил, что это может помочь мне, если я использую волшебный переключатель -XX:-UseSplitVerifier
для компиляции.
Что бы я хотел сделать, так это установить эту опцию Java во всем мире в Jenkins, но не нашли для нее каких-либо конфигураций. Может кто-нибудь помочь мне, как я могу это сделать?
Ближайшая вещь, которую я смог придумать, - установить аргумент через Maven, но я должен сделать это для каждой конфигурации проекта, и я хотел бы избежать этого.
Спасибо заранее.
Ответы
Ответ 1
В главном пункте меню Manage Jenkins
→ Configure System
вы можете установить его в поле для Global MAVEN_OPTS
.
Немного неясно, хотите ли вы включить эту опцию для самого контейнера Jenkins или только выполняемых в нем заданий, но если последнее и вы выполняете только задания maven, то что бы я сделал.
Приветствия,
Ответ 2
Если вы развернете Jenkins в Tomcat или Glassfish, я хотел бы предложить вам установить следующую конфигурацию следующим образом: -
Tomcat
Задайте переменную среды с именем CATALINA_OPTS, например
SET CATALINA_OPTS="-XX:-UseSplitVerifier"
EXPORT CATALINA_OPTS
The Glassfish
Отредактируйте [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
Надеюсь, это поможет.
Привет,
Charlee Ch.
Ответ 3
В Windows есть jenkins.xml в домашнем каталоге Jenkins. Просто добавьте необходимые параметры 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)
Ответ 4
По-видимому, единственный способ установить общесистемные JVM-свойства в Jenkins - это Groovy Script.
Создайте init.groovy.d
в доме Дженкинса и поместите в него файл groovy (load-properties.groovy
). В groovy script программно задайте системные свойства (подробнее см. Ссылку выше):
props.each { key, value ->
System.setProperty(key, value)
Вышеупомянутое решение сэкономило мой день, поскольку мне нужно отключить jsse.enableSNIExtension
во время проверки SCM, и он должен быть доступен для плагина SVN, а не для Maven.
Там config.xml
файл с тегами jdks/jdk/properties
XML, но он недокументирован.