作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用标准 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/
我是一名优秀的程序员,十分优秀!