gpt4 book ai didi

git - mvn release 使用特定的私钥推送到 git

转载 作者:行者123 更新时间:2023-12-03 18:32:59 26 4
gpt4 key购买 nike

我希望有人可以帮助解决这个问题。我正在尝试配置 mvn release插件 pom.xml以便将更新的 pom 版本和标签作为 release:prepare 的一部分推送到 git repo .至关重要的是,它需要使用特定用户的 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 ,当它尝试推送到 repo 时失败:
[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这让我相信:
  • 与私钥关联的用户对 repo 具有正确的权限,公钥与 repo 用户正确关联
  • 我的配置pom.xml和/或 settings.xml在选择/使用所需的私钥方面不太正确

  • (在有人建议之前,我不能简单地将 key 重命名为 ~/.ssh/id_rsa 因为当我们在 CI 堆栈上运行它时,它已经有一个用于其他目的的默认 ssh key )

    对此有任何想法或帮助将不胜感激

    一些额外的信息:
    如果我这样做 export GIT_SSH_COMMAND="ssh -i ~/.ssh/bitbucket-read-write-access"然后 git push ,它推得很好,这进一步让我相信私钥/公钥配置正确;这是错误的 mvn 配置。

    最佳答案

    为了让这个工作,我使用了 GIT_SSH_COMMAND 的一个变体。我在原始问题中所写的方法。

    虽然 GIT_SSH_COMMAND在我的开发机器上工作,版本git在我们的 CI 堆栈上很旧(1.7.1)和 GIT_SSH_COMMAND不支持! ( GIT_SSH_COMMAND 是在 2.10 中引入的)

    我得到了这个与 GIT_SSH 的组合环境变量和 shell 脚本:
    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 $*



    感觉有点黑客,但它有效。

    关于git - mvn release 使用特定的私钥推送到 git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53229242/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com