Docker pu sh в ECR из-за отказа Дженкинса: без базовых данных c учетные данные аутентификации - PullRequest
0 голосов
/ 28 января 2020

Я получаю эту ошибку при попытке преобразовать изображение sh docker в ECR из конвейерного задания jenkins:

12:53:22  The push refers to repository [XXX.dkr.ecr.us-east-1.amazonaws.com/YYY]
12:53:22  bf7d1e178283: Preparing
12:53:22  45423e7f92ab: Preparing
12:53:22  b4d6d89cf8b0: Preparing
12:53:22  no basic auth credentials

Я использую этот конвейерный скрипт для сборки и pu sh docker image:

stage('Build and push Docker') {
  steps {
    dir("$WORK_DIR") {
      script {
        sh("sudo $(aws ecr get-login --no-include-email --region $REGION)")
        sh("sudo docker build -t $IMAGE .")
        sh("sudo docker tag $IMAGE $ECR_REPO/$IMAGE")
        sh("sudo docker push $ECR_REPO/$IMAGE")
      }
    }
  }
}

Я попытался выполнить сценарий с и без sudo

Выполнение той же последовательности команд в оболочке на хосте Jenkins, что и у пользователя root работал без проблем.

Это мои настройки и исправления, которые я пробовал:

  • Jenkins 2.204.1 работает как пользователь jenkins
  • Плагин Amazon ECR 1.6
  • Я добавил AWS учетные данные в Jenkins
  • Пытался использовать сценарий оболочки, следуя командам pu sh в соответствии с инструкциями по ECR, а также используя docker трубный плагин docker.withRegistry(REPO_URL, 'ecr:region:creds-id')
  • Пытался удалить $HOME/.docker/config.json файл, как предложено здесь
  • Пытался работать как jenkins и root user (sudo docker push)
  • jenkins user has root разрешений, и я добавил его в docker группу, как указано здесь

В прошлом, когда запуск Jenkins как docker image Я получил docker pu sh для работы, запустив контейнер как root пользователь.

Возможно, причина root для этой проблемы this :

Docker для входа в систему требуется, чтобы пользователь использовал sudo или был root, за исключением случаев, когда:

  1. Подключение к удаленному демону, например docker -машина docker engine.
  2. Пользователь добавлен в группу docker. Это повлияет на безопасность вашей системы; группа docker эквивалентна root. См. Docker Поверхность атаки демона для деталей.

Но тогда добавление пользователя jenkins в группу docker должно работать ?!

PS Хотя мой вопрос похож на этот вопрос SO , ответ на него не решил мои проблемы: - (

...