#maven #hudson #jenkins #slave
#maven #хадсон #дженкинс #Подчинение
Вопрос:
У меня есть мастер Дженкинса (работающий на небольшом компьютере Linux) и подчиненный Дженкинс (работающий на «правильной» машине XP).
Я настроил оба для запуска всех jibs на подчиненном устройстве Windows XP.
К сожалению, каждый раз, когда сборка выполняется на этом подчиненном устройстве, сборка завершается неудачно из-за следующей ошибки :
ERROR: Ignore Problem expanding maven opts macros org.jenkinsci.plugins.tokenmacro.TokenMacro
Found mavenVersion 3.0.3 from file jar:file:/E:/java-ext/apache-maven-3.0.3/lib/maven-core-3.0.3.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties
Parsing POMs
ERROR: Echec à la lecture des POMs
hudson.util.IOException2: remote file operation failed: C:hudsonworkspaceAutocat at hudson.remoting.Channel@ee5bc4:ndx-PC-winXP
at hudson.FilePath.act(FilePath.java:752)
at hudson.FilePath.act(FilePath.java:738)
at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:817)
at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:617)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:429)
at hudson.model.Run.run(Run.java:1374)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:467)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:145)
Caused by: hudson.remoting.ProxyException: hudson.maven.MavenModuleSetBuild$MavenExecutionException: org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Failure to find fr.perigee.java:java-parent:pom:0.0.6 in http://tinkerpop.com/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of tinkerpop has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 3, column 10
Я знаю, что эта ошибка связана с неправильным определением репозитория, содержащего эти артефакты, поскольку используемый репозиторий определен в settings.xml . Итак, мой вопрос довольно прост: как я могу определить, какой settings.xml файл используется подчиненным устройством Дженкинса ?
Ответ №1:
Maven использует глобальные настройки и файл пользовательских настроек. Если файл пользовательских настроек существует, он переопределяет глобальный.
Глобальный находится внутри %M2_HOME%conf
, а пользовательский — внутри %HOME%.m2
. Здесь %HOME%
означает домашний каталог любого пользователя, который запускает подчиненный Jenkins.
Итак, самое простое решение, предполагающее, что это возможно в вашей ситуации, — просто скопировать правильный settings.xml файл в %HOME%.m2
каталог на подчиненной машине Дженкинса.
Кроме того, вы можете указать пользовательский settings.xml файл в командной строке mvn с помощью --settings
опции, чтобы вы могли поместить файл в известное местоположение (например C:
), а затем сказать Дженкинсу передать настройку в Maven, что-то вроде --settings C:settings.xml
.
Кроме того, часто бывает полезно создать нового пользователя Windows для запуска подчиненного Jenkins, чтобы вы могли легко определить, где он будет искать файлы конфигурации.
Комментарии:
1. Спасибо, я настроил подчиненную службу на запуск от имени локального пользователя, и settings.xml под C:/users/myuser/.m2 / был, наконец, поднят. Кроме того: с системным пользователем по умолчанию и без каких-либо других настроек settings.xml под maven используется установочная папка.
Ответ №2:
Как всегда, решение было проще, чем я думал.
Подчиненный Jenkins настроен для запуска системным пользователем. Как следствие, для использования моего settings.xml , все, что мне нужно было сделать, это изменить связанного с ним пользователя, и проблема исчезла!
Ответ №3:
Для меня, что заставило это работать, использовало переменную -Duser.home .
Я заставил это работать! Однако вместо того, чтобы вводить его в MAVEN_OPTS, на экранах configure jenkins я ввел его как переменную уровня JVM на свой веб-сервер.
Для меня я использую glassfish на WinTell вместо tomcat. Glassfish запускается как служба Windows. В основном введен:
Имя переменной JVM: user.home Значение JVM: /data/maven-2.2/jenkins
Затем в этом каталоге /data/maven-2.2/jenkins убедитесь, что у вас есть копия действительного settings.xml с правильно введенной информацией о прокси-сервере. Это позволяет мне изолировать отдельный settings.xml для моих сервисов jenkins строит v. вход в систему в интерактивном режиме.
Эрик