2

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.

1

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)

0

What about save the env variable within a file and read from it after, you can encrypt/decrypt or use another type of parameter if that is a problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.