Why Jenkins String parameter is null? - jenkins

I have set one String parameter for Jenkins parametrized job
String: MOV
Default value: 5
But when I log output as echo: "${MOV}", that value is null.
I tried with single quotes, without any quotes, without dollar sign but every time my value is null.
Can anyone help me?

Try params.MOV:
echo "${params.MOV}"
https://jenkins.io/doc/book/pipeline/syntax/#parameters

Related

Jenkins warning that a secret was wrongly used with string interpolation when in fact I was just using a string that happens to be equal do the secret

I have a credential named 'POSTGRES_PASSWORD' that has a value o 'test'.
I also have a job that is junit '/home/jap/.local/share/docker/volumes/jenkins_home/_data/workspace/vlep-pipeline_main/test-result/*.xml' and this job returns:
Warning: A secret was passed to "withEnv" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [POSTGRES_PASSWORD]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
Archive JUnit-formatted test results -- /home/jap/.local/share/docker/volumes/jenkins_home/_data/workspace/vlep-pipeline_main/${POSTGRES_PASSWORD}-result/*.xml (self time 9ms)
I tried using double quotes instead, but I still get the error. What am I doing wrong?

Python string as build parameter to Jenkins Trigger mail doesn't read the entire string. Instead cuts half of the string while reading

This is inside my trigger email
SQLScripts=["Query1","Query2","Query3","Query4","Query5","Query6"]
What gets read in string parameter for Jenkins build is following
This line of code executes
echo %SQLScripts%
Prints
echo ["Query1","Query2","Query3",
Initially I thought this could be some problem with how I wrote variable name, I tried $SQLScripts and "$SQLScripts". But problem is with reading the variable from email.
As I have manually added value inside jenkins build configuration and echo printed the entire value.
Please any help is appreciated.

Jenkinsfile: How do I print a boolean?

I would like to do the following as debugging output in a Jenkinsfile:
echo fileExists("path/to/some/file")
This does, however, not work. fileExists returns a boolean, which can apparently not be implicitly cast to a string, and the echo command wants a string.
So what's the correct way to print a boolean?
echo "${fileExists("path/to/some/file")}"
or more generally
echo "${boolean_expression}"
works. Is this how you're supposed to do it?

Jenkins file can we use the IF statement

in Jenkins file one of the variable is having the comma separated values like below.
infra_services=[abc,def,xyz]
when I write the below code it was throwing an error.
if ("{$Infra_Services}".contains("xyz"))
then
echo "$Infra_Services"
fi
yes you can do if statements in a Jenkinsfile. However if you are using declarative pipeline you need to brace it with the step script.
Your issue comes from the fact you did not put any double quotes around "abc" and all the elements of your array
infra_services=[abc,def,xyz]
​
A second error will raise after you fix this. If infra_services is an array, to manipulate it you should not try to cast it as string. It should throw when you do "{$Infra_Services}"
here is a working example
​def Infra_Services = ["abc","def","xyz"]
if (Infra_Services.contains("xyz")) {
println "found"
}​​
My advice is to test your groovy before running it on jenkins, you will gain precious time. Here is a good online groovy console I use to test my code. running the groovy console from terminal is an alternative
https://groovyconsole.appspot.com/

How to specify a value for a Jenkins environment variable that contains a space

I am trying to specify a value for a Jenkins environment variable (as created on the Manage Jenkins -> Configure System screen, under the heading "Global properties") which contains a space. I want to use this environment variable in an Execute Shell build step. The option that I need to appear in the command line in the build step is:
--platform="Windows 7"
The syntax I am using on the command line is --platform=${VARIABLE_NAME}
No matter how I attempt to format it, Jenkins seems to reformat it so that it is treated as two values. I have tried:
Windows 7
"Windows 7"
'Windows 7'
Windows\ 7
The corresponding results, when output during the Execute Shell build step have been:
--platform=Windows 7
'--platform="Windows' '7"'
'--platform='\''Windows' '7'\'''
--platform=Windows/ 7
I have also tried changing my command line syntax to --platform='${VARIABLE_NAME}' as well as '--platform=${VARIABLE_NAME}', but in each of those cases the ${VARIABLE_NAME} is not resolved at all and just appears as ${VARIABLE_NAME} on the resulting command.
I am hoping there is a way to make this work. Any suggestions are most appreciated.
You should be able to use spaces without any special characters in the global properties section.
For example, I set a variable "THIS_VAL" to have the value "HAS SPACES".
My test build job was the following:
#!/bin/bash
set +v
echo ${THIS_VAL}
echo "${THIS_VAL}"
echo $THIS_VAL
and the output was
[workspace] $ /bin/bash /tmp/hudson8126983335734936805.sh
HAS SPACES
HAS SPACES
HAS SPACES
Finished: SUCCESS
I think what you need to do is use the following:
--platform="${VARIABLE_NAME}"
NOTE: Use double quotes, not single quotes. Using single quotes makes the stuff inside the quotes literal, meaning that any variables will be printed as is, not parsed into the actual value. Therefore '${VARIABLE_NAME}' will be printed as is, not parsed into "Windows 7".
EDIT:
Based on #BobSilverberg comment below, use the following:
--platform="$VARIABLE_NAME"
Note: no curly brackets.

Resources