Выпуск 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-ключу.

Другие вопросы по тегам