ssh-add заставит работу трубопровода Дженкинса потерпеть неудачу - PullRequest
0 голосов
/ 15 февраля 2019

Дженкинс (2.162), обновленные модули.Мне нужно добавить частные зависимости github для сборки груза.Итак, мне нужно сохранить SSH-ключ в контейнере Jenkins до cargo build.

Я сделал:

stage('Build') {
    steps{
        script {
            dir('api'){
                withCredentials([string(credentialsId: 'GitKeyText', variable: 'ID_RSA')]) {
                    sh '''
                        set +x
                        eval `ssh-agent -s`
                        mkdir ~/.ssh
                        echo ${ID_RSA} >~/.ssh/id_rsa
                        chmod go-r ~/.ssh/id_rsa
                        ssh-add
                        cargo build
                    '''
                }
            }
            input message: "wait"
        }
    }
}

Все выглядит хорошо, и эта последовательность команд работает хорошо внутри контейнера докера.Но работа Дженкинса провалилась на ssh-add без каких-либо сообщений об ошибках.Просто ERROR: script returned exit code 1 в конце журнала консоли Jenkins.

add01: я добавил эхо-комментарий к коду и изменил set +x на set -x

без вывода с ssh-add(вывод на консоль)

.....
+ echo before ssh-add
before ssh-add
+ ssh-add
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // script
Post stage
.....

1 Ответ

0 голосов
/ 19 февраля 2019

Я использовал Jenkins SSH Agent Plugin .Все работают как задумано.

script {
    dir('contract_api'){
        sshagent(['GitSSHcred']) {
            sh 'cargo build'
        }
    }
}
...