2017-05-21 17 views
1

표준 maven 릴리스 플러그인 및 Bitbucket 파이프 라인을 사용하여 내 maven 프로젝트를 릴리스하려고합니다. 개인 키가 암호로 보호 된 나만의 도커 이미지를 만들었습니다. 내 Bitbucket 계정은이 도커 이미지에서 커밋을 허용하고 Bitbucket 파이프 라인은 빌드시 환경 변수를 통해 개인 키 암호문을 주입 할 수 있습니다.표준 maven 플러그인으로 공개 할 때 개인 키에 암호를 전달하는 방법

문제는 maven release plugin이 모든 것을 무시하고 허용 할 수없는 수동 단계 인 passphrase를 묻는 것입니다.

내 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:[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 

을 넣었습니다 지금 모든 빌드 세션이 메모리에 개인 키에로드로 시작

#!/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)" 

처럼 내 load-private-key.sh 파일을 보이는 표준 maven release plugin에서 사용할 수 있습니다.