1

Мы пытаемся получить M2 Release Plugin для развертывания выпущенных артефактов на нашем сервере Artifactory. Конфигурация в нашем pom.xml выглядит следующим образомПочему плагин M2 Release Jenkins не аутентифицирован для Artifactory?

.... 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.3.2</version> 
</plugin> 
.... 
<distributionManagement> 
    <repository> 
     <id>artifactory</id> 
     <url>http://example.com/artifactory/jenkins-release</url> 
    </repository> 
</distributionManagement> 

Использование Config File Provide Plugin мы определили глобальную settings.xml с соответствующими учетными данными

<settings> 
    <servers> 
     <server> 
      <id>artifactory</id> 
      <username>jenkins</username> 
      <password>secret!</password> 
     </server> 
    </servers> 
</settings> 

Если мы теперь начать сборку выпуска на Дженкинс, Maven говорит нам, что это получил HTTP 401 от Artifactory

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project example-maven-plugin: Failed to deploy artifacts: Could not transfer artifact com.example.maven.plugins:example-maven-plugin:jar:0.0.9 from/to artifactory (http://example.com/artifactory/jenkins-release): Failed to transfer file: http://example.com/artifactory/jenkins-release/com/example/maven/plugins/example-maven-plugin/0.0.9/example-maven-plugin-0.0.9.jar. Return code is: 401, ReasonPhrase:Unauthorized. -> [Help 1] 

В серверных журналов мы видим, что пользователь «non_authenticated_user» я s пытается сделать запрос HTTP PUT к этому URL-адресу.

Есть ли какая-то конфигурация в Maven или Jenkins, которых нам не хватает? Учетные данные верны, и если я использую settings.xml от Jenkins на моей локальной машине, все работает так, как ожидалось.

+0

Похоже, Дженкинс не взял файл настроек, который вы предоставили. Не знаете, почему, и немного не связанной темы, почему бы вам не использовать [Artifactory Jenkins plugin] (https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin)? Он полностью решает эту проблему и имеет встроенную функциональность выпуска. – JBaruch

+0

Вот что мы думали, может быть, ошибка в плагине, но я хотел убедиться, что мы ничего не пропустили. Мы используем этот плагин, но только для автоматического развертывания сборок SNAPSHOT. Мы обнаружили, что управление релизами этого плагина не содержит некоторых функций, которые выпускает Jenkins M2 Release Plugin (например, отдельные учетные данные для записи в SCM, дифференциация между версиями релизов/не-релиз buids, ...) – moxn

+1

Вы можете полностью настроить логику выпуска с помощью [промежуточного пользовательского плагина] (http://www.jfrog.com/confluence/display/RTF/User+Plugins#UserPlugins-Staging). Некоторые примеры приведены в [нашем GitHub] (https://github.com/JFrogDev/artifactory-user-plugins) – JBaruch

ответ

1

Существует a bug in the Maven release plugin до 2.2.2, что заставляет его игнорировать файл настроек, передаваемый Maven поставщиком файлов конфигурации. Решение заключается в том, чтобы указать новый плагин релиза maven в ваших проектах pom.xml, например:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.4.2</version> 
     </plugin> 
    </plugins> 
</build> 
+0

Спасибо за ответ, но в то время мы использовали 2.3.2. – moxn

+0

Дох, посмотрел номер версии на ваш вопрос сейчас! Кроме того, описание вашей проблемы было таким же, как у меня, поэтому я думаю, что оставлю свой ответ на случай, если это поможет кому-то другому. – robpvn

+0

Активировать этот ответ, потому что он исправил проблему для нас в связанном, но немного другом контексте. В другом модуле мы не задали версию для этого плагина, поэтому Maven использовал 2.7.x. Возврат к 2.4.1 исправил проблему. – moxn

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