Выпуск Maven с jenkins slave и Credentials: как передать учетные данные SCM в maven?
Я использую настройку главного / подчиненного Jenkins. Я бы хотел, чтобы у Дженкинса был один "источник" информации для полномочий. Не ключи / пароли разбросаны повсюду.
Поэтому я не хочу определять свой SCM в Jenkins (с учетными данными от поставщика учетных данных Jenkins), а затем снова в pom.xml/settings.xml/id_rsa.pem в зависимости от работы. Каждый любит делать свой собственный путь, и мы получаем копии ключевого файла или пароли повсюду. Рано или поздно кто-то толкает pom к публичному репо, и наш сервер скомпрометирован...
Я не вижу приемлемого способа передачи учетных данных из Jenkins в плагин выпуска Maven, где они могут быть использованы. Что мне не хватает? (выпуск maven завершается неудачно при попытке вставить теги в git
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] Permission denied (publickey).
)
Я мог бы явно определить "файл", который устанавливается на ведомом устройстве, который содержит pem (я могу придумать несколько способов сделать это), но у меня возникает головная боль при обслуживании, когда мы поворачиваем ключи, чтобы запомнить, что он находится в нескольких местах. В противном случае моментальные снимки работают в течение месяца, а затем происходит сбой выпуска, и никто не может понять, почему mvn внезапно не может нажать на git.
(Примечание: это только ключ входа в систему, без паролей)
3 ответа
Потратив все утро, пытаясь выяснить это, затем установите флажок "Агент SSH" в разделе "Построение среды". Отметьте его, и введите правильные учетные данные, и это работает. Я подумал об удалении вопроса, но после прочтения множества других предложений по техническому обслуживанию (включая копии файла.pem) я решил оставить его.
Чтобы это работало с репозиториями github, мне пришлось установить агент SSH (например, @P_W999) и добавить следующую конфигурацию в мой pom.xml:
[...]
<build>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
[...]
</plugins>
</build>
<scm>
<connection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</developerConnection>
<url>https://github.com/${mygithubusername}/${mygithubreponame}.git</url>
<tag>v@{project.version}</tag>
</scm>
[...]
Я поражен, что ни у кого нет хорошего ответа на это. Плагин ssh-agent ( https://wiki.jenkins-ci.org/display/JENKINS/SSH+Agent+Plugin) действительно предлагает решение для использования ключей ssh для отправки обновлений в плагин maven. Это также охватывало бы любые другие случаи использования, где требуется аутентификация по ssh-ключу.