Не удается вернуть значение файла в виде списка в сценарии ссылочных параметров активного выбора Дженкинса в jenkins

#jenkins #jenkins-pipeline #jenkins-plugins #jenkins-groovy #jenkins-cli

Вопрос:

Здравствуйте, у меня есть следующий код в качестве файла Дженкинса.

 pipeline {


agent any
  parameters{
    string(name: 'IP_ADDRESS', defaultValue: '',  description: 'Enter server IP address')
    string(name: 'USERNAME', defaultValue: '', description: '')
    string(name: 'PASSWORD', defaultValue: '', description: '')
  }
  environment{
    VERSION='1.3.0'
    
  }
  stages {
    stage('Build') {
      steps {
    echo 'Built'
    
    sh(script:"python sshMac.py ${IP_ADDRESS} ${USERNAME} ${PASSWORD}", returnStatus: true, returnStdout: true)
  }
}

stage('Test') {
  steps {
    script{
      
      env.FILENAME = readFile 'macAdds.properties'
      env.FILEDATA = FILENAME.tokenize( "," )
    
      input message: 'Please choose one',
        parameters: [
        [$class: 'ChoiceParameter', 
                                choiceType: 'PT_SINGLE_SELECT', 
                                description: 'Select the Environemnt from the Dropdown List', 
                                filterLength: 1, 
                                filterable: false, 
                                name: 'ENVIRONMENT', 
        script: [$class: 'GroovyScript',
            fallbackScript: [
                classpath: [], 
                sandbox: true, 
                script: 'return ["ERROR"]'
            ],
            script: [
                classpath: [], 
                sandbox: true, 
                script: """
                   
              return['1', '2', '3', '4']
                    
                """.stripIndent()
            ]
        ]
                            ],
                            [$class: 'ChoiceParameter', 
                                choiceType: 'PT_SINGLE_SELECT', 
                                description: 'Select the Environemnt from the Dropdown List', 
                                filterLength: 1, 
                                filterable: false, 
                                name: 'ENVIRONMENT2', 
        script: [$class: 'GroovyScript',
            fallbackScript: [
                classpath: [], 
                sandbox: true, 
                script: 'return ["ERROR"]'
            ],
            script: [
                classpath: [], 
                sandbox: true, 
                script: """
                   
              return['1', '2', '3', '4', '5']
                    
                """.stripIndent()
            ]
        ]
                            ],
      
    [$class: 'CascadeChoiceParameter', 
        choiceType: 'PT_SINGLE_SELECT',
        description: 'Select a choice',
        filterLength: 1,
        filterable: false,
        name: 'choice1',
        referencedParameters: 'ENVIRONMENT',
        script: [$class: 'GroovyScript',
            fallbackScript: [
                classpath: [], 
                sandbox: true, 
                script: 'return ["ERROR"]'
            ],
            script: [
                
                classpath: [], 
                sandbox: true, 
                script: """
                def tokens = ${FILENAME}.tokenize(',')

                    switch(ENVIRONMENT) {
                      case "1":
                      return ${env.FILEDATA}
                      case "2":
                      return ${env.FILEDATA}
                      case "3":
                      return ${env.FILEDATA}
                      case "4":
                      return ${env.FILEDATA}
                      }
                  
                    
                  """
            ]
        ]
    ],

      text(name: 'vertical', defaultValue: "${FILENAME}")
                    
                    
]

    }
    echo 'Testing'
    echo "${FILENAME}"
    echo "${FILEDATA}"
    
    
  }
}

stage('Deploy') {
  steps {
    echo 'Deploying'
   
  }
}
 

}
}

Итак, здесь я получил значения из файла (ИМЯ ФАЙЛА) и разделил их на список (ДАННЫЕ ФАЙЛА). Он отлично работает, и он тоже печатает и воспроизводит эхо. На самом деле он возвращает набор Mac-адресов из macAdds.свойства, такие как [ff:ff:ee:ee:ee:ff, ff:ee:dd:aa:bb:ee, ff:ee:aa:cc:bb:dd].

Но в моем опорном параметре активного выбора (choice1), когда я возвращаю значение FILEDATA в моем случае переключения как одиночный выбор, он не работает, где он будет запускать сценарий отката и выдает мне ошибку. Я протестировал возврат некоторых случайных значений, заданных вручную операторам switch, где это работает идеально. Я хочу знать, почему я не могу вернуть значения в моем скрипте активного ссылочного параметра выбора (choice1). Помоги мне выбраться!! Спасибо

Ответ №1:

Что ж, я нашел ответ на это решение. Когда вы используете значение groovy sandbox, как через, вы можете делать многое без ограничений. Но вы должны утвердить сценарий вручную в разделе Управление Дженкинсом => Утверждение сценария>. Надеюсь, это кому-нибудь поможет. Спасибо!