2017-05-21 4 views
1

標準のmavenリリースプラグインとBitbucketパイプラインを使用して私のmavenプロジェクトをリリースしようとしています。私はパスフレーズで保護された秘密鍵で自分のドッカー画像を作成しました。私のBitbucketアカウントはこのドッカーイメージからのコミットを許可し、Bitbucketパイプラインはビルド時に環境変数を介して秘密キーパスフレーズを注入することができます。標準のmavenプラグインでリリースするときに秘密鍵にパスフレーズを渡す方法

問題は、mavenリリースのプラグインがすべてを無視して、許容できない手動ステップであるパスフレーズを尋ねることです。

私は私のpom.xmlには、それぞれ、2.5.3および1.9.5

を最新のリリースやSCMのプラグインを使用しています

<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> 

よう/root/.m2の私のsettings.xmlに見えますサーバーのプロパティがあり

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

と私のSCMのURLのは

<scm> 
    <url>https://bitbucket.org/user/repo</url> 
    <developerConnection>scm:git:gi[email protected]:user/repo</developerConnection 
    <connection>scm:git:[email protected]:user/repo</connection> 
</scm> 
のようなものです

私はssh-agentを使用しようとしていましたが、動作するようですが、ssh-agentはコマンドラインでパスフレーズを渡すことはできません。

どうすれば解決できますか?

答えて

1

私は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)" 

のように見える今、すべてのビルドセッションがどのメモリの秘密鍵にロードで始まります標準のMavenリリースプラグインで使用できます。

関連する問題