我有一個Jenkins需要執行shell腳本的工作。它通過ssh密鑰連接到遠程計算機。以下是管道作業:在bash腳本中添加ssh密鑰(jenkins管道)
stage ('Run') {
try {
sh "chmod +x \$(find . -name '*.sh')"
wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) {
sh "./run-ansible-playbook.sh -f ansible-playbook.yml"
}
etc...
.sh文件執行ssh-agent和ssh-add命令。
sshAgentCount=$(pgrep ssh-agent | wc -l)
if [[ $sshAgentCount -eq 0 ]]; then
echo "# run ssh-agent #"
eval `ssh-agent -s`
ssh-add /var/lib/jenkins/id_rsa_ansible
fi
問題是,有時這有效,有時不會。我認爲這是因爲用戶(這裏是詹金斯)的tty隨時都在變化,並且ssh-agent進程與tty相關聯。 我不想總是打電話給eval ssh-agent -s
,因爲它會隨着時間的推移導致機器內存不足。
這裏ps aux | grep ssh-agent status:
jenkins 1243 0.0 0.0 11140 320 ? Ss 17:20 0:00 ssh-agent -s
jenkins 1397 0.0 0.0 11140 320 ? Ss 17:23 0:00 ssh-agent -s
jenkins 1435 0.0 0.0 11140 320 ? Ss 17:23 0:00 ssh-agent -s
你對這個問題有一個優雅的解決方案嗎? (僅在需要一個的ssh-agent)
謝謝了很多:)