Как использовать строковый параметр Дженкинса в конвейере

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

#дженкинс #groovy #дженкинс-плагины #дженкинс-конвейер

Вопрос:

Мы используем конвейер Дженкинса для настройки заданий в jenkins. Для множества заданий нам нужен пользовательский ввод, для которого мы используем параметризованную сборку, где пользователь может вводить значения параметров, а позже мы используем значения в нашем файле .jenkins в sh, например

  sh "./build-apply.sh ${accountnumber} ${volumename} ${vpcname} services ${snapshotid}"
  

Раньше это работало с

  • Дженкинс 2.16
  • Конвейер 2.3
  • Groovy 2.15

Однако, когда я перестраиваю Дженкинс в:

  • 2.16 или последняя версия 2.26
  • Конвейер 2.5
  • Конвейер: Groovy 2.19

Вышеуказанное sh перестало работать. Ошибка

 groovy.lang.MissingPropertyException: No such property: accountnumber for class: groovy.lang.Binding
  

Есть идеи, чего мне не хватает? Синтаксис неправильный?

Для справки полный Jenkinsfile для справки

 node {
  // Mark the code checkout 'stage'....


  stage 'Checkout'
  git branch: '****', credentialsId: '***', url: '****'

  stage 'Provision Volume'
  withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: '*****',
                    credentialsId: '****',
                    secretKeyVariable: '*****']]) {
    // Run the terraform build
    env.PATH = "${env.PATH}:/jenkins/terraform"
    sh "./build-apply.sh ${accountnumber} ${volumename} ${vpcname} services ${snapshotid}"
  }
}
  

Комментарии:

1. Откуда вы ожидаете получить accountnumber , volumename , vpcname и snapshotid ? Выполняется ли задание с правильными параметрами?

2. Они задаются как параметры в задании, у этого задания есть параметры с этими именами. Таким образом, это происходит от пользовательского ввода и устанавливается.

3. Не могли бы вы, пожалуйста, поделиться определением этих параметров из этого файла Дженкинса?

Ответ №1:

Скопируйте и вставьте приведенный ниже код в узел сценария конвейера: {

 stage ('BCCdlVsLib') {
build job: 'BCCdlVsLib', parameters:
[
    [$class: 'StringParameterValue', name: 'BINPATH', value: 'BINPATH'], 
    [$class: 'StringParameterValue', name: 'SOURCEFILE', value: 'SOURCEFILE']
        ]
}
  

В заданиях (BCCdlVsLib) включите опцию «этот проект параметризован» и введите 2 строковых параметра job_binpath,job_sourcefile.

Выведите переменные в файле echo job_binpath для конвейерных заданий echo job_sourcefile

После запуска задания конвейера вы получите следующий результат. ИСХОДНЫЙ ФАЙЛ BINPATH