Трубопровод Дженкинса зависает во время SSH - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь выполнить удаленную команду из конвейера jenkins на другой сервер. Я создал пользователя pf-devops на обеих машинах.

На сервере jenkins я создал s sh ключи id_rsa и id_rsa.pub в /home/pf-devops/.ssh.

Затем на другом сервере создал того же пользователя и добавил его ключ publi c в /home/pf-devops/.ssh/authorized_keys.

Затем я добавил его личный ключ в учетные данные Jenkins, как показано ниже:

enter image description here

Затем в файле Jenkins of В моем проекте у меня есть следующее:

def DOCKER_COMPOSE_FILE = 'docker-compose.yml'
def UUID = UUID.randomUUID().toString()
pipeline {
agent any

stages {
    stage('Deploy to danielserrao') {
        when {
            branch 'danielserrao'
        }
        steps {
            script {
                DOCKER_COMPOSE_FILE = 'docker-compose-dev-databases.yml'
                echo "This should be done only on danielserrao with docker compose file ${DOCKER_COMPOSE_FILE}"
                sshagent(['821f7495-e873-4a4b-97eb-f00433d078d9']) {
                    sh "ssh XXX.XXX.X.153 'touch /tmp/${UUID}'"
                }
            }
        }
    }
...

, но при выполнении конвейера я получаю следующее:

This should be done only on danielserrao with docker compose file docker-compose-dev- 
databases.yml
[Pipeline] sshagent
[ssh-agent] Using credentials pf-devops (pf-devops private ssh key)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-GfKzb8sTTsPq/agent.2021
SSH_AGENT_PID=2023
Running ssh-add (command line suppressed)
Identity added: /var/jenkins_home/workspace/tion-deploy- 
penguin_danielserrao@tmp/private_key_8009694440488072457.key 
(/var/jenkins_home/workspace/tion-deploy- 
penguin_danielserrao@tmp/private_key_8009694440488072457.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
+ ssh XXX.XXX.X.153 touch /tmp/11c8ef5c-4e71-4f38-948a-825af129ce9d
...

Тогда он зависает навсегда. Если я пытаюсь выполнить ту же команду s sh с сервера jenkins, используя пользователя pf-devops, он работает и создает временный файл в XXX.XXX.X.153, поэтому закрытый ключ пользователя S SH выглядит как правильно.

Я также попробовал другое решение с методом withCredentials, как указано в https://www.reddit.com/r/docker/comments/b8lmc4/jenkins_pipeline_not_correctly_using_sshagent/, но получил тот же результат.

Любая идея о том, что может произойти или как я могу устранить эту проблему?

версия Jenkins: 2.204.1

Обе машины ОС: Ubuntu 18.04.3 LTS

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 11 января 2020

Я недавно использовал этот ответ, и он работал: { ссылка }

В противном случае, вы можете попробовать ssh -v ... (многословно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...