Возможно, вы не согласны с ошибкой, сообщенной в плагине ECR здесь: https://issues.jenkins -ci.org / browse / JENKINS-44143
Различные люди в этой теме описывают немного разные симптомы, но общая тема заключается в том, что докер не смог использовать детали аутентификации, которые были правильно сгенерированы плагином ECR.
Я обнаружил, что в моем случае это было связано с тем, что плагин ECR сохранялся в одной конфигурации докера, а плагин docker-commons (который обрабатывает фактическую работу API докера) считывал данные из другого. Docker изменил форматы конфигурации и расположения в более ранней версии, что вызвало конфликт.
Автор плагина предлагает обходной путь, который заключается в том, чтобы сначала просто уничтожить оба файла конфигурации:
node {
//cleanup current user docker credentials
sh 'rm ~/.dockercfg || true'
sh 'rm ~/.docker/config.json || true'
//configure registry
docker.withRegistry('https://ID.ecr.eu-west-1.amazonaws.com', 'ecr:eu-west-1:86c8f5ec-1ce1-4e94-80c2-18e23bbd724a') {
//build image
def customImage = docker.build("my-image:${env.BUILD_ID}")
//push image
customImage.push()
}
Возможно, вы захотите попробовать это просто как шаг отладки и быстрое исправление (если оно работает, вы можете быть уверены, что эта ошибка - ваша проблема).
Мое постоянное исправление заключалось в том, чтобы просто создать новый стиль dockercfg вручную с разумным значением по умолчанию, а затем установить переменную окружения, указав на него.
Я сделал это в моем Dockerfile, который создает мой экземпляр Jenkins следующим образом:
RUN mkdir -p $JENKINS_HOME/.docker/ && \
echo '{"auths":{}}' > $JENKINS_HOME/.docker/config.json
ENV DOCKER_CONFIG $JENKINS_HOME/.docker