snippetMinor
How to pass a String parameter with spaces in Jenkins to environment variable
Viewed 0 times
passwithjenkinsenvironmentspaceshowvariablestringparameter
Problem
In jenkins Job, I am taking a String parameter as below:
FoldersList = test1,test2,test3,Folder name1,Folder name2,Folder name3
when I pass this value to environment variable the jenkins job fails with error : Unknown lifecycle phase etc etc since spaces are not allowed in folder names.
I am passing the environment variable like this in goals and options section :
exec:java -Dexec.classpathScope="test" -Dexec.mainClass="com.mypackage.main.TestNGRunner" -Dexec.cleanupDaemonThreads=false "-Dexec.args=-inputexcel=Data.xlsx -jenkinsJobName=testJob
-layer=MultiplefolderTest -InpFoldersList="\"$inpFoldersList"\" -threadCount=12 -retryCount=3"
If I pass a single string within double quotes it works but the user will enter multiple folder names possibly with spaces. Please can somebody help since I tried different options but none work. Is there a way to manipulate the string and pass it to the environment variable.
FoldersList = test1,test2,test3,Folder name1,Folder name2,Folder name3
when I pass this value to environment variable the jenkins job fails with error : Unknown lifecycle phase etc etc since spaces are not allowed in folder names.
I am passing the environment variable like this in goals and options section :
exec:java -Dexec.classpathScope="test" -Dexec.mainClass="com.mypackage.main.TestNGRunner" -Dexec.cleanupDaemonThreads=false "-Dexec.args=-inputexcel=Data.xlsx -jenkinsJobName=testJob
-layer=MultiplefolderTest -InpFoldersList="\"$inpFoldersList"\" -threadCount=12 -retryCount=3"
If I pass a single string within double quotes it works but the user will enter multiple folder names possibly with spaces. Please can somebody help since I tried different options but none work. Is there a way to manipulate the string and pass it to the environment variable.
Solution
If the input string is failing due to folders with spaces not having quotes around them, try adding quotes around every object.
The InpFolderList already adds end quotes:
Add the quotes around every object.
groovy:
Output: (End quotes are left off)
Test Code: https://www.jdoodle.com/execute-groovy-online/ (Copy / Paste Code and Execute)
Using above as an example, you could also add the end quotes and have a complete String variable to pass as $InpFoldersList, which would remove confusion if attempting to debug.
Reference: http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/runtime/StringGroovyMethods.html#replaceAll(java.lang.CharSequence,java.util.regex.Pattern,java.lang.CharSequence)
The InpFolderList already adds end quotes:
InpFoldersList="\"$inpFoldersList"\"Add the quotes around every object.
groovy:
class Example {
static void main(String[] args) {
String FolderList = "test1,test2,test3,Folder name1,Folder name2,Folder name3";
println(FolderList.replaceAll(",","\",\""));
}
}Output: (End quotes are left off)
test1","test2","test3","Folder name1","Folder name2","Folder name3Test Code: https://www.jdoodle.com/execute-groovy-online/ (Copy / Paste Code and Execute)
Using above as an example, you could also add the end quotes and have a complete String variable to pass as $InpFoldersList, which would remove confusion if attempting to debug.
Reference: http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/runtime/StringGroovyMethods.html#replaceAll(java.lang.CharSequence,java.util.regex.Pattern,java.lang.CharSequence)
Code Snippets
class Example {
static void main(String[] args) {
String FolderList = "test1,test2,test3,Folder name1,Folder name2,Folder name3";
println(FolderList.replaceAll(",","\",\""));
}
}Context
StackExchange DevOps Q#11685, answer score: 1
Revisions (0)
No revisions yet.