Jenkins pipeline pass all parameters down to downstream jobs

后端 未结 3 1119
情深已故
情深已故 2021-02-19 11:56

I have a pipeline job named buildall which looks like this:

pipeline {
    stages {
        stage(\"job1\") {
            build job: \"job1\"
           


        
相关标签:
3条回答
  • 2021-02-19 12:14

    If you don't care about the parameter types, this approach does not require disabling the Groovy Sandbox - it simply assumes that all parameters can be treated as a string (won't work for "File", for example):

    def myparams = params.collect{
        string(name: it.key, value: it.value)
    }
    build job: 'downstream-job', parameters: myparams
    

    It wouldn't be too hard to expand the logic to handle predefined non-string parameter types, but I agree that this should not be necessary. A better approach would be to expose parameters in the format required by the build() DSL closure, including type specifics that are currently not visible via the "params" global variable, or perhaps to add a boolean, eg:

    // I wish:
    build job: 'downstream-job', includeMyParameters: true, parameters: anyExtras
    
    0 讨论(0)
  • 2021-02-19 12:14

    You can pass all your pipeline parameters with this :

    def params=[]
    env.getEnvironment().each{ k, v ->
            params.add(string(name:"${k}", value:"${v}"))
       }
    
    def slaveJob = build job: 'BuildJob', parameters:params
    
    0 讨论(0)
  • 2021-02-19 12:16

    The following seems to work (I haven't tested it extensively though):

    pipeline {
        agent any
        parameters {
            string(name: 'PARAM1', description: 'Param 1?')
            string(name: 'PARAM2', description: 'Param 2?')
        }
        stages {
            stage('Example') {
                steps {
                    echo "${params}"
                    script {
                        def myparams = currentBuild.rawBuild.getAction(ParametersAction).getParameters()
                        build job: 'downstream-pipeline-with-params', parameters: myparams
                    }    
                }
            }
        }
    }
    

    Drawback: to access rawBuild and getAction you have to disable the Groove sandbox or approve these signatures in Jenkins under Manage Jenkins > In-process Script Approval. This dialog will show you that you might introduced a security vulnerability. So it depends on your environment if you want to take this risk or not.

    0 讨论(0)
提交回复
热议问题