Jenkins文件生成作业参数

Jenkins文件生成作业参数,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,在jenkinsfile中,我有大约10个作业,我向每个作业传递参数,如下所示 stage('Test1 ) steps { script { echo 'Starting "test1"' build job: './test1 parameters: [ [$class: 'StringParameterValue', name: 'INSTANCE_NAME', value: params.INSTANCE_NAME ], [$class: 'Strin

在jenkinsfile中,我有大约10个作业,我向每个作业传递参数,如下所示

stage('Test1 )
steps {
  script {
      echo 'Starting "test1"'
      build job: './test1
parameters: [
  [$class: 'StringParameterValue', name: 'INSTANCE_NAME', value: params.INSTANCE_NAME ],
  [$class: 'StringParameterValue', name: 'WORKSPACE', value: params.WORKSPACE ],
  [$class: 'StringParameterValue', name: 'APP_NAME', value: 'test' ],
  [$class: 'StringParameterValue', name: 'GIT_BRANCH', value: params.GIT_BRANCH ],
] } }
stage('Test2 )
steps {
  script {
      echo 'Starting "test2"'
      build job: './test2' ,
parameters: [
  [$class: 'StringParameterValue', name: 'INSTANCE_NAME', value: params.INSTANCE_NAME ],
  [$class: 'StringParameterValue', name: 'WORKSPACE', value: params.WORKSPACE ],
  [$class: 'StringParameterValue', name: 'APP_NAME', value: 'test' ],
  [$class: 'StringParameterValue', name: 'GIT_BRANCH', value: params.GIT_BRANCH ],
] } }
是否有一种方法可以在外部定义此部分并使用它传递到作业

我正在尝试相同的查询@


谢谢

我们可以传递一个带有参数的映射来构建作业

def jobParameters = [:]
jobParameters['INSTANCE_NAME'] = params.INSTANCE_NAME
jobParameters['WORKSPACE'] = params.WORKSPACE
def paramsObjects = []
jobParameters.each {
  key, value ->
    paramsObjects.push([$class: 'StringParameterValue', name: key, value: value])
}    
paramsObjects将如下所示:

[
    [$class:StringParameterValue, name:param1, value:value1],
    [$class:StringParameterValue, name:param2, value:value2]
]
     stages {
        stage('Test1')
        steps {
            script {
                echo 'Starting "test1"'
                build job: './test1'
                parameters:
                paramsObjects
            }
        }
        stage('Test2')
        steps {
            script {
                echo 'Starting "test2"'
                build job: './test2',
                        parameters: paramsObjects
            }
        }
    }
阶段配置如下所示:

[
    [$class:StringParameterValue, name:param1, value:value1],
    [$class:StringParameterValue, name:param2, value:value2]
]
     stages {
        stage('Test1')
        steps {
            script {
                echo 'Starting "test1"'
                build job: './test1'
                parameters:
                paramsObjects
            }
        }
        stage('Test2')
        steps {
            script {
                echo 'Starting "test2"'
                build job: './test2',
                        parameters: paramsObjects
            }
        }
    }

你能详细说明一下吗?这10个作业是使用给定参数从Jenkins文件构建的下游作业吗?你在外部定义这个部分是什么意思?是的,我有10个作业的通用参数。定义外部,我的意思是使用一个函数来拥有这些参数,并在每个构建作业部分中调用该函数。但有些人认为它不起作用。我已经用更多的细节编辑了我的帖子,非常感谢你的回复。我收到一个错误,因为它不是有效的节定义:def parameters=[:]。需要一些额外的配置required@NiceThomas这很可能是因为参数是保留关键字。尝试将其重命名为其他名称,如def myJobParameters=[:]。@DibakarAditya您是对的。我会更新答案