2015-01-15 2 views
3

Не дубликат! Я просмотрел ресурсы SO с похожими заголовками, но эта проблема, похоже, связана с Jenkins и ssh, а другие не покрывают эту проблему. В частности, это не проблема maven, это проблема Дженкинса.Jenkins + Nexus - Parsing POM терпит неудачу с ошибкой не аутентифицирован

При анализе моего POM Дженкинс не может подключиться к nexus через ssh (он ищет родительский POM для того, который он обрабатывает). На этом этапе процесса (рядом с запуском) POM не считывается самим maven - он используется Дженкинсом (или одним из его плагинов) для создания дерева зависимостей, чтобы проекты могли быть построены в правильном заказ. Ошибка, которую я получаю, - peer not authenticated.

Вот соответствующий бит выхода:

Parsing POMs 
Failed to transfer Could not transfer metadata org.us.thing:thingy:2.0/maven-metadata.xml 
from/to nexus (https://nexus:2443/nexus/content/groups/public): 
peer not authenticated 

ERROR: Processing failed due to a bug in the code. Please report this to [email protected] 
java.lang.IllegalStateException: Failed to build parent project for org.us.thing:thingy:pom:2.0 
    at org.apache.maven.project.MavenProject.getParent(MavenProject.java:381) 
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1325) 

Я установил трастовый магазин с помощью javax.net.ssl.trustStore, и это работает отлично, через Jenkins, когда специалист работает сборки. Я также думаю, что Дженкинс обращает на это внимание как-то потому, что ошибка, возникающая, когда не используется хранилище доверия, обычно отличается, но я не уверен, действительно ли это так.

Я настроил артефакт-резольвер как диспетчер репо с моим URL-адресом и учетными данными. Я также создал запись «Credentails» для домена nexus также с моими учетными данными.

Итак, как действовать? Решение было бы неплохо, но я соглашусь на большее количество панировочных сухарей.

ответ

1

Поскольку Jenkins не удается подключиться к Nexus до разбора POM, это означает, что информация, установленная в POM, не предоставляет достаточной информации для подключения. Запись учетных данных является хорошим первым шагом.

Дженкинс предоставляет возможность установить эту информацию ранее. Плагин config file provider, позволяет вам настроить «внешний» файл. Это позволяет настроить как глобальный, так и пользователь Maven settings.xml. Затем в вашей конфигурации сборки вы можете добавить шаг сборки, чтобы использовать этот управляемый файл. Я считаю полезным установить две вещи:

  1. Дженкинс построить шаг, чтобы использовать управляемый файл для глобальной конфигурации
  2. управляемом файл для пользователя конфигурации в расширенных настройках самого шага Maven.

Это выводит из строя всю информацию о соединении из POM и избавляет от проблемы порядка синхронизации.

1

Проблема также может быть ошибкой в ​​Maven Project Plugin. Этот плагин пытается разобрать pom.xml на этапе сборки до запуска вашего задания maven. Однако плагин может не использовать ваши настроенные параметры settings.xml или ваши цели и параметры maven правильно (в моем случае он игнорируется -Dmaven.wagon.http.ssl.insecure=true-Dmaven.wagon.http.ssl.allowall=true).

Обходной путь заключается в том, чтобы настроить предварительный этап для вашего проекта в Дженкинсе, например, Pre-Step-> Invoke top level Maven target-> Цель: clean -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true. На этом этапе предварительной сборки загружаются необходимые зависимости, так что плагин проекта maven может найти их на этапе сборки и может успешно проанализировать pom.

+0

Благодарим за этот намек, я столкнулся с той же проблемой, и ваш обходной путь спас мой день. –

Смежные вопросы