HiveBrain v1.2.0
Get Started
← Back to all entries
snippetMinor

How to pass a String parameter with spaces in Jenkins to environment variable

Submitted by: @import:stackexchange-devops··
0
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.

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:

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 name3

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)

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.