Jenkins Amazon ECR: нет базовых учетных данных

Я не могу отправлять изображения ocker в Amazon ECR с помощью Jenkins Pipeline: я всегда получаю no basic auth credentials :-(

Вот моя установка:

  • Дженкинс 2.46.2
  • Подключаемый модуль Amazon ECR 1.4
  • Я добавил учетные данные AWS aws-jenkins в Jenkins (протестировано локально и успешно отправлено в AWS ECR)
  • Я напечатал /root/.dockercfg для отладки аутентификации в моем Jenkinsfile

Jenkinsfile:

stage("Docker") {
  dir(path) {
    docker.build("my-image:latest")
  }
  docker.withRegistry("https://<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com", "ecr:eu-central-1:aws-jenkins") {
    sh "cat /root/.dockercfg" // debug
    docker.image("my-image:latest").push()
  }
}

Журналы:

[Pipeline] withDockerRegistry
Wrote authentication to /root/.dockercfg
[Pipeline] {
[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ cat /root/.dockercfg
{"https://<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com": {
  "auth": "[...]",
  "email": "[email protected]"
}}[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ docker tag --force=true my-image:latest <my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image:latest
Warning: '--force' is deprecated, it will be removed soon. See usage.
[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ docker push <my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image:latest
The push refers to a repository [<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image]
e30bf54e0f87: Preparing
b9f2c30c0d28: Preparing
5defc95691fd: Preparing
295d6a056bfd: Preparing
no basic auth credentials
[Pipeline] }
[Pipeline] // withDockerRegistry

Любые идеи?

ОБНОВЛЕНИЕ (2017-05-23):
Проблема с Jira: https://issues.jenkins-ci.org/browse/JENKINS-44143


person Cedric Thiebault    schedule 02.05.2017    source источник
comment
Является ли ecr: eu-central-1: ‹aws-jenkins-credentials› кредитом AWS?   -  person Pierre Ozoux    schedule 02.05.2017
comment
да. Я обновил свои вопросы для ясности. Я создал новые учетные данные AWS в Jenkins и назвал их aws-jenkins.   -  person Cedric Thiebault    schedule 03.05.2017
comment
Я добавил проблему Jira: issues.jenkins-ci.org/browse/JENKINS- 44143   -  person Cedric Thiebault    schedule 23.05.2017


Ответы (2)


Даже это кажется логичным, что docker.withRegistry будет выполнять вход в ECR при запуске и выход из системы, когда это будет сделано, это не выполняется. Поэтому перед выполнением push необходимо установить awscli и добавить команду входа в систему ECR.

sh ("eval \ $ (aws ecr get-login --no-include-email | sed | https: // || < / а> ') ")

См. http://www.tikalk.com/devops/ecr-in-pipeline/ с подробным примером.

person yorammi    schedule 14.07.2017

просто удалите или переименуйте файл $ HOME / .docker / config.json со своего локального компьютера или облачного сервера. Это решит проблему отсутствия базовых учетных данных.

Выполните в терминале следующий шаг:

mv $HOME/.docker/config.json $HOME/.docker/config.json.backup
person Shajed    schedule 27.01.2020