Comment invoquer un pipeline jenkins a dans un autre pipeline jenkins B

j'ai deux pipelines jenkins, disons pipeline-A et pipeline-B. Je veux invoquer pipeline-a dans pipeline-B. Comment puis-je faire cela?

(pipeline-a est un sous-ensemble de pipeline-B. Pipeline-a a la responsabilité de faire des choses de routine qui peuvent être reprises dans pipeline-B)

j'ai installé jenkins 2.41 sur ma machine.

24
demandé sur Yash 2017-04-11 07:56:31

3 réponses

un peu imprécis si vous voulez invoquer un autre script de pipeline ou un autre travail, alors je réponds aux deux:

script Pipeline L'étape" load " exécutera l'autre script de pipeline. Si vous avez les deux scripts dans le même répertoire, vous pouvez les charger comme ceci:

def pipelineA = load "pipeline_A.groovy"
pipelineA.someMethod()

autre script (pipeline_a.groovy):

def someMethod() {
    //do something
}

return this

Pipeline de travail

si vous parlez d'exécuter un autre travail de pipeline, le "travail" étape peut accomplir ceci:

build job: '<Project name>', propagate: true, wait: true

propagez: propagez les erreurs

attendre: Attendre la fin

Si vous avez paramétrée sur le travail, vous pouvez les ajouter comme ceci:

build job: '<Project name>', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]
22
répondu Matias Snellingen 2018-05-03 15:54:59

la solution suivante fonctionne pour moi:

pipeline {
    agent
    {
        node {
                label 'master'
                customWorkspace "${env.JobPath}"
              }
    }

    stages 
    {
        stage('Start') {
            steps {
                sh 'ls'
            }
        }

        stage ('Invoke_pipeline') {
            steps {
                build job: 'pipeline1', parameters: [
                string(name: 'param1', value: "value1")
                ]
            }
        }

        stage('End') {
            steps {
                sh 'ls'
            }
        }
    }
}
14
répondu Yash 2017-08-30 09:52:14

pour ajouter à ce que @matias-snellingen a dit. Si vous avez plusieurs fonctions, le return this devrait être sous la fonction qui sera appelée dans la canalisation principale de script. Par exemple :

def someMethod() {
   helperMethod1() 
   helperMethod2()
} 
return this 

def helperMethod1(){ 
   //do stuff
} 

def helperMethod2(){
  //do stuff
}

someMethod() est celui qui sera appelé dans la canalisation principale de script

0
répondu papigee 2018-05-04 03:53:51