Ich versuche, die Google-Container-Registrierung von meinem Jenkins schieben. Die Builds laufen innerhalb des Kubernettes Jenkins Plugins, das den gcr.io/cloud-solutions-images/jenkins-k8s-slave verwendet, um das Docker-Image in den Kubernetes Native Docker zu erstellen.Push to Google Container-Registrierung schlägt fehl: Erneut versuchen
Nach der Authentifizierung in der Google-Container-Registrierung versuche ich, das neu erstellte Bild zu pushen. Das ist meine Pipeline Skript:
def imageTag = 'gcr.io/project-id/tag'
def version = version from pom
sh './mvnw package'
sh "docker build -t $imageTag:$version ."
sh('gcloud auth activate-service-account --key-file=$FILE')
sh('docker login -p $(gcloud auth print-access-token) -u _token https://gcr.io')
sh("gcloud docker -- push $imageTag:$version")
Die Push mit der folgenden Ausgabe fehlschlägt:
c6ff94654483: Preparing
209db64c273a: Preparing
762429e05518: Preparing
2be465c0fdf6: Preparing
5bef08742407: Preparing
c6ff94654483: Retrying in 5 seconds
5bef08742407: Retrying in 5 seconds
209db64c273a: Retrying in 5 seconds
2be465c0fdf6: Layer already exists
762429e05518: Layer already exists
c6ff94654483: Retrying in 4 seconds
5bef08742407: Retrying in 4 seconds
209db64c273a: Retrying in 4 seconds
c6ff94654483: Retrying in 3 seconds
5bef08742407: Retrying in 3 seconds
209db64c273a: Retrying in 3 seconds
c6ff94654483: Retrying in 2 seconds
5bef08742407: Retrying in 2 seconds
209db64c273a: Retrying in 2 seconds
c6ff94654483: Retrying in 1 second
5bef08742407: Retrying in 1 second
209db64c273a: Retrying in 1 second
5bef08742407: Retrying in 10 seconds
...
unexpected EOF
Ich habe in den letzten Tagen das gleiche Problem mit dem Setup von Gitlab's CI/CD-Runner, dass es sich automatisch in GCR einloggt, wenn es Bilder in die privaten Repositories schiebt. Mit welchem Benutzerkonto sind Sie angemeldet? Ein persönlicher oder ein Dienstkonto? Verfügt es über die entsprechenden IAM-Berechtigungen? –
Ich benutze ein Dienstkonto mit der JSON-Datei und ändere ihre Berechtigungen nicht. Vielleicht hat es keine Schreibberechtigungen für den Bucket. Ich werde das später überprüfen und Sie wissen lassen. – Jacob
Ich lese gerade Ihre Pipeline durch. Gibt es einen Grund, warum du '_token' als Benutzernamen übergibst? Die erweiterte Authentifizierungsseite scheint "oauth2accesstoken" zu verwenden? https://cloud.google.com/container-registry/docs/advanced-authentication –