mvn release для отправки в git с использованием определенного закрытого ключа - PullRequest
0 голосов
/ 09 ноября 2018

Я надеюсь, что кто-то может помочь с этим.Я пытаюсь настроить плагин mvn release в pom.xml так, чтобы обновленная версия pom и тег помещались в git-репозиторий как часть release:prepare.Важно отметить, что необходимо использовать закрытый ключ ssh определенного пользователя , поскольку в конечном итоге это будет частью нашего стека CI.

В pom.xml в настоящее время у меня очень простая конфигурациядля плагина релиза:

<build>
    <plugins>
        <!-- release plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
        </plugin>

Настройки scm в pom выглядят так:

<scm>
    <connection>scm:git:git://ssh@bitbucket.org/**account**/**project**.git</connection>
    <developerConnection>scm:git:ssh://git@bitbucket.org/**account**/**project**.git</developerConnection>
    <url>https://bitbucket.org/**account**/**project**</url>
</scm>

И у меня есть следующее свойство в pom (хотя и не уверен, что этоиспользуется или нет - я нашел ссылку на него из-за слабой проблемы):

<properties>
    <project.scm.id>bitbucket.org</project.scm.id>

Наконец, у меня в mvn settings.xml есть следующее:

<servers>
    <server>
        <id>bitbucket.org</id>
        <privateKey>~/.ssh/bitbucket-read-write-access</privateKey>
        <passphrase></passphrase>
    </server>

Закрытый ключфайл ~/.ssh/bitbucket-read-write-access существует, и в этой папке нет других ключей (я намеренно удалил значение по умолчанию id_rsa)

Когда я запускаю mvn release:perform, он не работает, когда пытается перейти в репозиторий:

[INFO] Executing: /bin/sh -c cd /home/nathanrussell/projects/**project** && git push ssh:********@bitbucket.org/**account**/**project**.git refs/heads/master:refs/heads/master
[INFO] Working directory: /home/nathanrussell/projects/**project**
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.162 s
[INFO] Finished at: 2018-11-09T15:25:36Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project **project**: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] git@bitbucket.org: Permission denied (publickey).
[ERROR] fatal: Could not read from remote repository.
[ERROR] 
[ERROR] Please make sure you have the correct access rights
[ERROR] and the repository exists.

Единственный способ заставить его нажать правильно, это переименовать файл ~/.ssh/bitbucket-read-write-access в ~/.ssh/id_rsa, что заставляет меня поверить, что:

  • Пользователь, связанныйс закрытым ключом имеет правильные права на репо и открытый ключ правильно задociated с пользователем репо
  • Моя конфигурация pom.xml и / или settings.xml не совсем верна в отношении выбора / использования желаемого закрытого ключа

(Перед кем-либопредполагает, что я не могу просто переименовать ключ на ~/.ssh/id_rsa, потому что когда мы запускаем его в стеке CI, у него уже есть ssh-ключ по умолчанию для другой цели)

Любые мысли или помощь по этому поводу были бы оченьпризнателен


Некоторая дополнительная информация:
Если я сделаю export GIT_SSH_COMMAND="ssh -i ~/.ssh/bitbucket-read-write-access", тогда git push, это подтолкнет нормально, что еще больше заставляет меня думать, что закрытый / открытый ключ правильно настроен;и это неправильная конфигурация mvn.

1 Ответ

0 голосов
/ 24 января 2019

Чтобы это работало, я использовал вариант подхода GIT_SSH_COMMAND, о котором я писал в исходном вопросе.

Хотя GIT_SSH_COMMAND работал на моей машине для разработки, версия git в нашем стеке CI довольно старая (1.7.1) и GIT_SSH_COMMAND не поддерживается! (GIT_SSH_COMMAND было введено в 2.10)

Я получил это, работая с комбинацией переменной окружения GIT_SSH и сценария оболочки:

export GIT_SSH=/var/home/teamcity/.ssh/ssh-using-bitbucket-read-write-access.sh

и

$ cat /var/home/teamcity/.ssh/ssh-using-bitbucket-read-write-access.sh
#!/bin/bash

ssh -i ~/.ssh/bitbucket-read-write-access $*


Это похоже на взлом, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...