2017-05-02 7 views
3

ich nicht in der Lage bin zu ocker Bilder zu Amazon ECR mit Jenkins Pipeline schieben: Ich no basic auth credentials immer :-(bekommenJenkins Amazon ECR: keine grundlegenden auth Anmeldeinformationen

Hier ist mein Setup:

  • Jenkins 2.46.2
  • Amazon ECR plugin 1.4
  • ich habe AWS-Anmeldeinformationen hinzugefügt aws-jenkins Jenkins (getestet lokal und erfolgreich geschoben AWS ECR)
  • Igedruckt habenzu debuggen Auth in meinem 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() 
    } 
} 

Logs:

[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 

Irgendwelche Ideen?

UPDATE (2017.05.23):
Hier ist die Jira Ausgabe: https://issues.jenkins-ci.org/browse/JENKINS-44143

+0

Ist ecr: eu-central-1: ein AWS-Cred? –

+0

Ja. Ich habe meine Fragen zur besseren Übersicht aktualisiert. Ich habe in Jenkins neue AWS-Credentials erstellt und sie "aws-jenkins" genannt. –

+0

Ich habe die Jira-Frage hinzugefügt: https://issues.jenkins-ci.org/browse/JENKINS-44143 –

Antwort

0

Auch, dass es logisch erscheint, dass docker.withRegistry eine Anmeldung ECR beim Start durchführen wird und Abmeldung, wenn Sie fertig Es wird nicht ausgeführt. Daher müssen Sie awscli installieren und ECR-Login-Befehl hinzufügen, bevor Sie den Push ausführen.

sh ("eval \ $ (aws ecr get-Login --no-include-E-Mail | sed 's | https://||')")

http://www.tikalk.com/devops/ecr-in-pipeline/ für ausführliches Beispiel finden.

Verwandte Themen