2016-09-19 4 views
1

Ich habe eine Jenkins-Instanz (die tatsächlich in Docker läuft) für meine kontinuierliche Integration.Hinzufügen von Tags zu Docker Bild von Jenkins

Der jenkins-Server erstellt Docker-Images auf einem externen Docker-Host, testet sie und verschiebt sie dann zu getaggt mit my-app:tested.

Wenn ich nun ein Release erstelle, möchte ich das Docker-Image von Test an vX.X erneut taggen. Ich mache nicht will das Bild mit einem neuen Tag neu erstellen, ich möchte das vorhandene Bild neu taggen.

Wie kann dies mit Jenkins getan werden? Ich schaue mir die Jenkins Plugins an und finde keine mit dieser Fähigkeit.

Antwort

1

Da Sie nicht zu einem der verwendeten Plugins verlinken, kann ich nicht einfach sagen, ob sie ein existierendes Image neu taggen können, dies ist jedoch über einen Shell-basierten Job möglich.

Wenn Sie ein Shell (Bash oder ähnliches) Skript in Jenkins verwenden, können Sie dies einfach mit einem Standard-Docker-Befehl zum Markieren vorhandener Bilder tun. Wenn Ihre my-App: Testbild bereits lokal zwischengespeichert ist für Ihr jenkins Job bauen Sie ausführen können:

docker login -u $USER -p $PASSWORD <myregistry.example.org> 
docker pull my-app:tested 
docker tag my-app:tested my-app:vX.X 
docker push my-app:vX.X 

Wenn mein-App: getestet zwischengespeichert wird lokal für den jenkins Job Sie den docker pull Befehl weglassen. Weitere Informationen finden Sie unter docker tag documentation. Wenn dieser auf Shell-Befehlen basierende Workflow nicht in Ihren Plug-in-basierten Build-Workflow passt, bin ich mir nicht sicher, wie Sie das machen würden.

Ich benutze keine Jenkins oder Jenkins Plugins für die Erstellung von Docker Images, daher bin ich nicht vertraut mit Plugins für den Aufbau von Docker Images in Jenkins. Jemand anderer könnte Ihnen vielleicht mit einem pluginbasierten Build-Job helfen.