在Jenkins Pipeline中,parameters 定义在 pipeline 或 stage 中的行为取决于你如何定义它们。
pipeline {
parameters {
string(name: 'GLOB_VAR', defaultValue: 'default', description: 'This is a global variable')
}
stages {
stage('Example') {
steps {
echo "Global variable value: ${params.GLOB_VAR}"
}
}
}
}
在上面的例子中,GLOB_VAR 是一个全局参数,可以在 Pipeline 的任何地方通过 params.GLOB_VAR 访问。
pipeline {
stages {
stage('Example') {
parameters {
string(name: 'STAGE_VAR', defaultValue: 'default', description: 'This is a stage-specific variable')
}
steps {
echo "Stage variable value: ${params.STAGE_VAR}"
}
}
stage('Another Stage') {
// 这里无法访问 params.STAGE_VAR
steps {
echo "Trying to access stage variable: ${params.STAGE_VAR}"
}
}
}
}
然而,请注意,在Jenkins Pipeline (Declarative) 的当前实现中,stage 级别的 parameters 定义实际上并不会产生预期的效果;它们不会使参数成为该 stage 专有的。即使在 stage 级别定义了参数,它们仍然会被视为全局参数,可以在整个 Pipeline 中访问。
为了在特定 stage 中使用局部变量,通常的做法是使用 script 块和局部变量,而不是 parameters:
pipeline {
stages {
stage('Example') {
steps {
script {
def stageVar = 'local value'
echo "Stage variable value: ${stageVar}"
}
}
}
stage('Another Stage') {
// 这里无法访问上面定义的 stageVar
steps {
echo "This stage doesn't have access to the previous stage's local variable."
}
}
}
}
在这个例子中,stageVar 是一个局部变量,只能在 Example stage 的 script 块内部访问。