Bagaimana untuk memohon jenkins pipa Yang lain jenkins pipa B

Saya memiliki dua Jenkins pipa, let's mengatakan pipa A dan pipa B. saya ingin memohon pipa-A di pipa-B. Bagaimana saya bisa melakukan ini?

(pipa-A adalah subset dari pipa-B. Pipa-Yang bertanggung jawab untuk melakukan beberapa hal-hal rutin yang dapat digunakan kembali dalam pipa-B)

Saya telah menginstal Jenkins 2.41 di mesin saya.

Mengomentari pertanyaan (1)

Sedikit tidak jelas jika anda ingin memanggil yang lain pipa script atau pekerjaan, jadi aku menjawab kedua:

Pipa script "beban" langkah akan mengeksekusi lainnya pipa script. Jika anda memiliki kedua script di direktori yang sama, anda dapat memuat seperti ini:

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

Lainnya script (pipeline_a.groovy):

def someMethod() {
    //do something
}

return this

Pipa pekerjaan

Jika anda berbicara tentang mengeksekusi lain pipa pekerjaan, "membangun pekerjaan" langkah dapat mencapai hal ini:

build job: '', propagate: true, wait: true

menyebarkan: Menyebarkan kesalahan

menunggu: Menunggu penyelesaian

Jika anda memiliki paramters pada pekerjaan, anda dapat menambahkan mereka seperti ini:

build job: '', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]
Komentar (11)
Larutan

Berikut solusi yang bekerja untuk saya:

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'
            }
        }
    }
}
Komentar (5)

Untuk menambah apa yang @matias-snellingen kata. Jika anda memiliki beberapa fungsi, kembali ini harus di bawah fungsi yang akan dipanggil dalam pipa utama script. Misalnya di :

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

def helperMethod1(){ 
   //do stuff
} 

def helperMethod2(){
  //do stuff
}

The someMethod() adalah salah satu yang akan dipanggil dalam pipa utama script

Komentar (0)

Pilihan lain adalah untuk membuat paket, beban itu dan menjalankannya dari paket.

package name.of.package
import groovy.json.*

def myFunc(var1) {
return result
}

Daripada mengkonsumsi

@Library('name_of_repo')
import name.of.package.* 
utils = new name_of_pipeline()
// here you can invoke
utils.myFunc(var)

semoga membantu

Komentar (0)

Seperti yang disebutkan oleh @Matias Snellingen dan @Céline Aussourd, dalam kasus meluncurkan multibranch pekerjaan yang anda miliki untuk menentukan cabang untuk membangun seperti ini :

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

Dalam kasus saya itu memecahkan masalah.

Komentar (1)