Jenkins не может выполнить docker вход в систему через агент s sh - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю конвейер Jenkins для развертывания моего приложения. Я построил и pu sh docker изображение до AWS ECR. Последний шаг - выполнение s sh для сервера развертывания (EC2) и запуск контейнера docker на основе последнего созданного образа.

Это мой сценарий:

stage('Deploy') {
            steps {
                script {
                    sshagent(['ssh-cridentials']) {
                        sh "ssh -o StrictHostKeyChecking=no jenkins@host sudo docker rm -f myapp"
                        sh "ssh -o StrictHostKeyChecking=no jenkins@host sudo docker image prune -a -f"
                        sh "ssh -o StrictHostKeyChecking=no jenkins@host \"cat /opt/aws/password.txt | sudo docker login --username AWS --password-stdin $ecrURI & sudo docker run -p 80:80 -d --name=myapp $imageURI\""
                    }
                }
            }
        }

Однако Дженкинс сбой при сборке, и я получил ошибку:

docker: Error response from daemon: Get https://xxx: no basic auth credentials.

Эта команда не смогла войти в ECR. Но он работает успешно, если я выполняю ту же команду на сервере развертывания.

1 Ответ

0 голосов
/ 13 февраля 2020

Похоже, что-то не так с вашим escape-символом, попробуйте без использования этого (я полагаю, у вас есть допустимый URL-адрес ecr в переменной $ ecrURI)

sh "ssh -o StrictHostKeyChecking=no jenkins@host cat /opt/aws/password.txt | sudo docker login --username AWS --password-stdin $ecrURI & sudo docker run -p 80:80 -d --name=myapp $imageURI"
...