gpt4 book ai didi

git - 使用标准 Maven 插件发布时如何将密码短语传递给私钥

转载 作者:行者123 更新时间:2023-12-02 13:50:20 25 4
gpt4 key购买 nike

我正在尝试使用标准 Maven 发布插件和 Bitbucket 管道发布我的 Maven 项目。我已经创建了自己的 docker 镜像,其中私钥受密码保护。我的 Bitbucket 帐户允许从这个 docker 镜像提交,并且 Bitbucket 管道能够在构建时通过环境变量注入(inject)私钥密码。

问题是 maven 发布插件会忽略所有内容并要求输入密码,这是 Not Acceptable 手动步骤。

我在/root/.m2 中的 settings.xml 看起来像

<server>
<id>bitbucket.org</id>
<privateKey>/root/.ssh/id_rsa</privateKey>
<passphrase>${env.BB_PIPELINES_MAVEN_3_3_9_JDK_8_SSH_PASSPHRASE</passphrase>
</server>

我正在使用最新版本和 scm 插件,分别是 2.5.3 和 1.9.5

在我的 pom.xml 中有服务器属性

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

我的 scm url 就像

<scm>
<url>https://bitbucket.org/user/repo</url>
<developerConnection>scm:git:git@bitbucket.org:user/repo</developerConnection
<connection>scm:git:git@bitbucket.org:user/repo</connection>
</scm>

我正在尝试使用 ssh-agent,它似乎可以工作,但看起来 ssh-agent 也不允许在命令行中传递密码。

有什么办法可以解决吗?

最佳答案

我设法使用 expect 和 ssh-agent 做了一些解决方法。

在我的 .bashrc 中放置

eval `ssh-agent -s`
/root/load-private-key.sh $BITBUCKET_PIPELINES_MAVEN_3_3_9_JDK_8_SSH_PASSPHRASE

我的 load-private-key.sh 文件看起来像

#!/usr/bin/expect -f
set password [lindex $argv 0];
set timeout 10
spawn ssh-add /root/.ssh/id_rsa
expect "Enter passphrase for /root/.ssh/id_rsa: "
sleep 1
send $password\n
expect "Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)"

现在每个构建 session 都从加载到内存中的私钥开始,它可以被标准的 maven 发布插件使用。

关于git - 使用标准 Maven 插件发布时如何将密码短语传递给私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44095002/

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