Are parameters case sensitive in Jenkins pipeline?

Viewed 3561

I created a test jenkins job pipeline. This job has String parameter - 'testVar'

Jenkinsfile code:

println("env.TESTVAR=" + env.TESTVAR)
println("testVar: " + testVar)
println("perform env.testVar = env.testVar + '-changed'")
env.testVar = env.testVar + '-changed'
println("env.testVar=" + env.testVar)
println("params.testVar=" + params.testVar)
println("params.TESTVAR=" + params.TESTVAR)
println("testVar=" + testVar)

I started the job with testVar equal to 'testValue'.

Jenkins output:

[Pipeline] echo
env.TESTVAR=testValue
[Pipeline] echo
testVar: testValue
[Pipeline] echo
perform env.testVar = env.testVar + '-changed'
[Pipeline] echo
env.testVar=testValue-changed
[Pipeline] echo
params.testVar=testValue
[Pipeline] echo
params.TESTVAR=null
[Pipeline] echo
testVar=testValue-changed
[Pipeline] End of Pipeline

I have the following questions:

  1. Why env.TESTVAR=testValue? I have testValue parameter, not TESTVALUE. Are jenkins parameters (accessed from Groove code as env.VARNAME) case-insensitive?
  2. Why params.TESTVAR=null? Are jenkins parameters (accessed from Groove code as params.VARNAME) case-sensitive?
  3. Why env.testVar=testValue-changed and testVar=testValue-changed after performing env.testVar = env.testVar + '-changed', but params.testVar=testValue. Why has the value not changed?
1 Answers

There's an open bug for this one.

Basically, params from parametrized build are copied to env of the node... and environment variables are known to be case-insensitive, which is the bug mentioned above.

Whereas params are just a snapshot of the input paramters, immutable and case sensitive as you have found.

Related