2017-12-28 14 views
1

I einen Andockfensters Behälter haben zu beenden, die bestimmte Aufgaben durchführt und ist innerhalb Jenkins Pipeline wie folgt geplant:Jenkins Pipeline nicht in der Lage einen Andockfensters Behälter

pipeline { 
    stages { 
     stage('1') { 
      steps { 
       sh "docker run -i --rm test" 
      } 
     } 
    } 
} 

Wenn die Pipeline irgendwie abgebrochen, durch Zeitablauf oder manuell beispiels , der Behälter hört nicht auf und bleibt am Leben.

Wie konfiguriere ich es so, dass es zusammen mit der Pipeline terminiert wird?

Docker version 17.06-ce

+0

Stoppen Sie den Behälter, bevor Sie einen weiteren Test durchführen. –

+0

Und noch eine wichtige Frage hier. Warum müssen Sie manuell stoppen oder es manchmal Zeitüberschreitung. –

+0

Es hängt manchmal oder unsere Blockierung etwas wichtig, also möchte ich in der Lage sein, Job zu beenden, wann immer ich will. Momentan kündige ich es, aber der ressourcenaufwendigste Teil (der Container) wäre nicht betroffen –

Antwort

2

Hallo Elessar können Sie eine "immer" in den Post Schritten konfigurieren. Hauptsächlich wird der Befehl immer innerhalb ausgeführt, ohne von der Build-Stornierung, dem Fehlschlag oder dem Erfolg abhängig zu sein.

pipeline { 
    agent any 
    stages { 
     stage('Example') { 
      steps { 
       sh "docker run -i --rm test" 
      } 
     } 
    } 
    post { 
     always { 
      sh "docker stop test" //or something similar 
     } 
    } 
} 

Ich hoffe, dass dies Ihr Problem zu lösen!

+0

Ja, ich weiß es, aber im wirklichen Fall habe ich 3 Container hintereinander laufen und die Logik einer solchen Terminierung wäre eher unordentlich –

+0

Ich habe die Docker-Dokumentation überprüft und Sie können auch das Flag --stop-timeout (\t API 1.25 +) -> Timeout (in Sekunden) setzen, um einen Container zu stoppen. Ich weiß nicht, ob das ist, was Sie suchen ... https://docs.docker.com/engine/reference/commandline/container_run/ – Guel135

+0

Vielen Dank, aber diese Lösung wird nicht mit manuellen Jobabtreibung arbeiten. Ich möchte nur unabhängig von Bedingungen zu synchronisieren: den Job zu töten -> den Container zu töten –

Verwandte Themen