J'ai un travail Jenkins qui doit exécuter un script shell. Il fait une connexion via la clé ssh à un ordinateur distant. Voici le travail de pipeline:Ajouter une clé ssh dans le script bash (pipeline 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...
Le fichier .sh fait le ssh-agent et les commandes 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
Le problème est que cela fonctionne parfois et parfois non. Je pense que c'est à cause du tty de l'utilisateur (ici jenkins) qui change tout le temps et le processus ssh-agent est lié à un tty. Je ne veux pas appeler eval ssh-agent -s
toujours parce que cela cause un manque de mémoire sur la machine par le temps.
Voici la ps aux | grep Statut 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
Avez-vous une solution élégante à ce problème? (Un ssh-agent que si nécessaire)
Merci beaucoup :)