Как прочитать свойство из файла конфигурации внутри конвейера Jenkins, используя плагин Config File Provider - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу параметризовать свой конвейер Jenkins с помощью простого конфигурационного файла свойств

skip_tests=true

, которое я добавил в файл управления конфигурацией Jenkins:

config file management screenshot

В моем конвейере я импортирую этот файл и пытаюсь прочитать его, используя плагин файла конфигурации Jenkins Pipeline Config.

node('my-swarm') {

 MY_CONFIG = '27206b95-d69b-4494-a430-0a23483a6408'

 try {

     stage('prepare') {
         configFileProvider([configFile(fileId: "$MY_CONFIG", variable: 'skip_tests')]) {
             echo $skip_tests
             assert $skip_tests == 'true'
         }
     }
 } catch (Exception e) {
     currentBuild.result = 'FAILURE'
     print e
 }
}

Это приводит к ошибке:

provisioning config files...
copy managed file [my.properties] to file:/home/jenkins/build/workspace/my-workspace@tmp/config7043792000148664559tmp
[Pipeline] {
[Pipeline] }
Deleting 1 temporary files
[Pipeline] // configFileProvider
[Pipeline] }
[Pipeline] // stage
[Pipeline] echo
groovy.lang.MissingPropertyException: No such property: $skip_tests for 
class: groovy.lang.Binding

Есть идеи, что я здесь не так делаю?

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

Вы неправильно использовали Groovy GString, вам нужно обернуть $skip_tests в " или использовать skip_tests напрямую.

configFileProvider([configFile(fileId: "$MY_CONFIG", variable: 'skip_tests')]) {
  echo skip_tests
  assert skip_tests == 'true'

  echo "$skip_tests"
  assert "$skip_tests" == 'true'
}

Примечание : значение skip_tests - это путь к файлу конфигурации, который копируется из мастера в рабочую область задания. Это не содержимое файла конфигурации.

1 голос
/ 29 апреля 2019

Поскольку файл имеет формат свойства, вы можете использовать его на шаге оболочки:

sh """
  source ${MY_CONFIG}
  .
  .
  .
"""

Вам нужно будет экспортировать свойства, которые должны быть доступны в программах, вызываемых оболочкой (например, Maven)

0 голосов
/ 30 апреля 2019

С помощью других ответов и Как прочитать файл свойств из сценария конвейера Jenkins 2.0 Я нашел следующий код для работы:

configFileProvider([configFile(fileId: "$PBD1_CONFIG", variable: 'configFile')]) {
     def props = readProperties file: "$configFile"
     def skip_tests = props['skip_tests']
     if (skip_tests == 'true') {
        print 'skipping tests'
     } else {
        print 'running tests'
     }
}

Мне пришлось использовать readProperties из плагина Jenkins ' Pipeline Utility Steps .

...