2017-05-02 4 views
3

Je ne suis pas en mesure de pousser les images ocker à Amazon ECR avec Jenkins Pipeline: Je reçois toujours no basic auth credentials :-(Jenkins Amazon ECR: aucune information d'identification auth de base

Voici ma configuration:

  • Jenkins 2.46.2
  • Amazon ECR plugin 1.4
  • J'ai ajouté des informations d'identification AWS aws-jenkins à Jenkins (testé poussé localement et avec succès à AWS ECR)
  • J'ai imprimé /root/.dockercfg à déboguer auth dans mon 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() 
    } 
} 

Journaux:

[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 

Des idées?

UPDATE (23/05/2017):
Voici la question Jira: https://issues.jenkins-ci.org/browse/JENKINS-44143

+0

Est-ce que ecr: eu-central-1: un crédit AWS? –

+0

Oui. J'ai mis à jour mes questions pour plus de clarté. J'ai créé de nouvelles informations d'identification AWS dans Jenkins et je l'ai nommé 'aws-jenkins'. –

+0

J'ai ajouté le numéro de Jira: https://issues.jenkins-ci.org/browse/JENKINS-44143 –

Répondre

0

Même qu'il semble logique que docker.withRegistry effectuera une connexion à ECR au début et lorsque vous avez terminé dconnecter , ce n'est pas fait. Pour cela, vous devez installer awscli et ajouter la commande de connexion ECR avant d'effectuer le push.

sh ("eval \ $ (SSFE ecr get-connexion --no-include-email | sed 's | https://||')")

Voir http://www.tikalk.com/devops/ecr-in-pipeline/ par exemple détaillé.