私はシェルスクリプトを実行する必要があるJenkinsジョブを持っています。それはリモートコンピュータにsshキーを介して接続を行います。bashスクリプト(jenkinsパイプライン)にsshキーを追加
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ステータス:
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
この問題の解決策はありますか? (1 ssh-agentのが必要な場合にのみ)
はあなたにたくさんのありがとう:)