UPDATE
I have a simple pipeline where I want to receive in parameters multiple choices from a file. In my file I have
@Test1,Accounts @Test2,Services @Test3,Accesses and I want to have all of "@Test1", "@Test2" and "@Test3" in checkboxes as parameters so I would run only the tests selected. But I'm not understanding what I'm doing wrong. Pipeline
def code = """tests = getChoices() return tests def getChoices() { def filecontent = readFile "/var/jenkins_home/test.txt" def stringList = [] for (line in filecontent.readLines()) {stringList.add(line.split(",")[0].toString())} List modifiedList = stringList.collect{'"' + it + '"'} return modifiedList }""".stripIndent() properties([ parameters([ [$class : 'CascadeChoiceParameter', choiceType : 'PT_CHECKBOX', description : 'Select a choice', filterLength : 1, filterable : false, name : 'choice1', referencedParameters: 'role', script : [$class : 'GroovyScript', fallbackScript: [ classpath: [], sandbox : true, script : 'return ["ERROR"]' ], script : [ classpath: [], sandbox : true, script : code ] ] ] ]) ]) pipeline { agent { docker { image 'node:latest' } } stages { stage('Tags') { steps { getChoices() } } } } def getChoices() { def filecontent = readFile "/var/jenkins_home/test.txt" def stringList = [] for (line in filecontent.readLines()) { stringList.add(line.split(',')[0].toString()) } List modifiedList = stringList.collect { '"' + it + '"' } echo "$modifiedList" return modifiedList } With this approach I know I can use multi-select checkboxes because I tried to substitute
def code = """ tests = ["Test1", "Test2", "Test3"] return tests""".stripIndent() and I get the output that I wanted.
But when I run my pipeline I get build SUCCESS but always get fallbackScript in my Build parameters checkbox. Can anyone help me out understand what is causing fallbackScript to run always? Thanks :)