0

Verwaltet, um Integrationstests parallel auf dem gleichen Knoten erfolgreich auszuführen, und jetzt möchte ich sie über verschiedene Knoten verteilen. Im Beispiel unten möchte ich, dass die Stufen IT 1 und IT 2 auf verschiedenen Knoten ausgeführt werden, wobei IT 3 auf dem ursprünglichen Knoten ausgeführt wird. Versuchte mehrere Kombinationen mit node als Eltern von stage('IT 1') und node als Kind, aber ich bekomme Syntaxfehler für beide. Was ist die richtige Syntax, um dies zu erreichen?Führen Sie Jenkins parallele Stufen über verschiedene Knoten mit deklarativer Syntax

pipeline { 

    agent { label '!master' } 

    stages { 
    stage('Integration Tests') { 
     parallel { 
     stage('IT 1 (slow)') { 
      steps { 
      sh 'run-it-1.sh' 
      } 
     } 
     stage('IT 2 (slow)') { 
      steps { 
      sh 'run-it-2.sh' 
      } 
     } 
     stage('IT 3 (quick)') { 
      steps { 
      sh 'run-it-3.sh' 
      } 
     } 
     } 
    } 
    } 
} 

Edit: Mit label statt node Arbeiten für deklarative Pipelines. Beispiel unten:

stage('IT 1 (slow)') { 
    agent { label '!master' } 
    steps { 
    sh 'run-it-1.sh' 
    } 
} 

Antwort

1

Seit deklarative Version 1.2, können Sie direkt die Art des Mittels Sie für jede parallele Stufe verwenden mögen erklären: https://jenkins.io/blog/2017/09/25/declarative-1/

Nicht diesen speziellen Anwendungsfall geprüft, aber ich nehme an, dass, wenn Sie deklarieren Sie keinen Agenten {} für Stufe "IT 3", es wird auf dem ursprünglichen Knoten ausgeführt.

Hoffentlich hilft es.

+0

Danke. Ich versuche immer noch, es zu bestätigen, aber mein Problem scheint von der Verwendung von 'node' anstelle von' label' zu kommen. Von https://stackoverflow.com/questions/42050626/jenkins-pipeline-agent-vs-node: _ "Agent ist für deklarative Pipelines und Knoten ist für Skripted Pipelines" _. – noisebleed

Verwandte Themen