我已经配置了jenkins管道,该管道对于每个作业都有多个字符串参数。这些参数对于所有构建作业都是通用的。我想在全局级别设置这些参数,以便可以在所有阶段使用我。除了阶段之外,我还有一个重试逻辑,该逻辑在第一次失败后尝试2次。越过3尝试保释。
目前,我已经两次配置了参数,第一次在初始构建触发器中,第二次在重试块中。这是重复的定义。而且在任何时候,所有参数都相同。
我试图在阶段开始之前在顶部定义参数,但是即使在构建步骤中定义的作业需要这些参数,阶段也不会使用这些参数。
pipeline {
agent {
label 'master'
}
parameters
{
string(name: 'VERSION', defaultValue: '', description: 'VERSION No.')
string(name: 'DEPLOY_TYPE', defaultValue: '', description: 'DEPLOY_TYPE')
string(name: 'TICKET', RELEASE: '$RELEASE', description: 'Release No.')
}
stage ("Stage1") {
steps {
script {
def retryAttempt = 0
try{
build(
job: 'Job1',
parameters: [
[
$class: 'StringParameterValue',
name: 'VERSION',
value: "${VERSION}"
],
[
$class: 'StringParameterValue',
name: 'DEPLOY_TYPE',
value: "${DEPLOY_TYPE}"
],
[
$class: 'StringParameterValue',
name: 'TICKET',
value: "${TICKET}"
]
]
)
}
catch(error) {
echo "First build failed, let's retry if accepted"
retry(2) {
build(
job: 'Job1',
parameters: [
[
$class: 'StringParameterValue',
name: 'VERSION',
value: "${VERSION}"
],
[
$class: 'StringParameterValue',
name: 'DEPLOY_TYPE',
value: "${DEPLOY_TYPE}"
],
[
$class: 'StringParameterValue',
name: 'TICKET',
value: "${TICKET}"
]
]
)
}
}
}
}
}
我想使用全局参数在管道中定义一次,并在所有阶段使用所有参数。
答案 0 :(得分:0)
由于所有作业的参数都相同,因此可以将参数作为列表而不是单独传递。
def copyOfJobParams = currentBuild.rawBuild.getAction(ParametersAction).getParameters().collect()
build( job: 'Job1', parameters: copyOfJobParams)
请注意,如果您使用声明性管道,则需要将其包装在script{}
块中