Замените значения из файла свойств в Jenkinsfile для динамически установленных переменных -- groovy поле с участием jenkins-pipeline поле с участием jenkins-groovy поле с участием jenkins-declarative-pipeline пол Связанный проблема

Substitute values from property file in Jenkinsfile for dynamically set variables


0
vote

проблема

русский

У меня есть jenkinsfile с несколькими параметрами, которые относятся к окружающей среде.

Значения для этих параметров хранятся в файле свойств. Я пытаюсь установить переменные на основе выбранной среды, а затем заменить их значения из файлов свойств.

jenkinsfile

Среда - это параметр выбора, имеющий 2 значения: FT, Perf и PM, как показано ниже в моем jenkinsfile

 <код> choice (         name: 'ENVIRONMENT',         choices: ['ft', 'perf','pm'],         description: 'please select the environment'         )   

Property_File - еще один параметр выбора, как показано ниже

 <код>  choice (         name: 'PROPERTY_FILE',         choices: ['jenkins/app.groovy'],         description: 'please select the property file'         )   

app.groovy выглядит как:

 <код> Test_perf="Hello" Test_ft="World" Test_pm="Welcome"   

<Сильные> Этапы

 <код> stage('Load Environment Property File') {                     steps {                         script {                                 //sourcing user selected property file                                 load "${PROPERTY_FILE}"                                 def envName = "${PROPERTY_FILE}".tokenize(".")[0]                                 //it will set build description as description in Jenkins build history                                 env.envName=envName                                 currentBuild.description = "Env:${envName}"                                 }                           }                 }                    

// этап, для которого мне нужна помощь

 <код> stage('Set Variables Based upon environment name') {                     steps {                            script{                                 if ("${ENVIRONMENT}" ==  "perf" ){                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_pm} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "HELLO", i.e.; replacing the variable "${Test_perf}" stuffed inside "var" from the property file. However, since the property file is already loaded, it will not replace the key by its value from the property file.                                 } else if ("${ENVIRONMENT}" ==  "ft" ){                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_ft} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "World"                                  } else {                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_pm} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "Welcome"                                 }                              }                      }                 }   

Есть ли способ дополнительно заменить значение из файла свойств. Для E.g.; «$ {var}» расширяется до «$ {test_pm}», а затем "$ {test_pm}" получает значение «Добро пожаловать» из файла свойств. Пожалуйста, помогите.

Английский оригинал

I have a Jenkinsfile with multiple parameters that are environment-specific.

The values for those parameters are stored in a property file. I am trying to set the variables based upon the selected environment and then replace their values from the property files.

Jenkinsfile

ENVIRONMENT is a choice parameter having 2 values: ft, perf and pm as below in my Jenkinsfile

choice (         name: 'ENVIRONMENT',         choices: ['ft', 'perf','pm'],         description: 'please select the environment'         ) 

PROPERTY_FILE is another choice parameter as below

 choice (         name: 'PROPERTY_FILE',         choices: ['jenkins/app.groovy'],         description: 'please select the property file'         ) 

app.groovy looks like:

Test_perf="Hello" Test_ft="World" Test_pm="Welcome" 

Stages

stage('Load Environment Property File') {                     steps {                         script {                                 //sourcing user selected property file                                 load "${PROPERTY_FILE}"                                 def envName = "${PROPERTY_FILE}".tokenize(".")[0]                                 //it will set build description as description in Jenkins build history                                 env.envName=envName                                 currentBuild.description = "Env:${envName}"                                 }                           }                 }                  

//STAGE FOR WHICH I NEED HELP

stage('Set Variables Based upon environment name') {                     steps {                            script{                                 if ("${ENVIRONMENT}" ==  "perf" ){                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_pm} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "HELLO", i.e.; replacing the variable "${Test_perf}" stuffed inside "var" from the property file. However, since the property file is already loaded, it will not replace the key by its value from the property file.                                 } else if ("${ENVIRONMENT}" ==  "ft" ){                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_ft} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "World"                                  } else {                                     var="${Test_"+"${DEPLOYMENT_ENVIRONMENT}"+"}"                                     echo "${var}" //output is ${Test_pm} and is correct as the substitution happens.                                     //NOW, I AM TRYING TO echo "Welcome"                                 }                              }                      }                 } 

Is there a way to further substitute the value from the property file. For e.g.; "${var}" expands to "${Test_pm}" and then "${Test_pm}" gets the value "Welcome" from the property file. Please help.

</div
           
     
     

Список ответов

Связанный проблема

2  Использование GroovyClasslassLoader из Java - классы не GC'd  ( Using groovyclassloader from java classes not gcd ) 
Я создал пользовательский класс в Java, который я использую для пользовательских нагрузочных классов Groovy. Мой класс Java начинается так: <код> public c...

31  Обнаружение первого и последнего элемента внутри Groovy каждая крышка {}  ( Detecting first and last item inside a groovy each closure ) 
Я использую Groovy's Handy Markupbuilder для создания HTML-страницы из различных исходных данных. Одна вещь, которую я изо всех сил пытаюсь сделать красиво,...

38  Печать переменных и значений в Groovy Object  ( Printing out variables and values in a groovy object ) 
Как я могу распечатать (публичные и внутренние) переменные и их значения Groovy Object? I.E <код> class X { def X = 10 def Y = 5 private void doPri...

2  Groovy Markupbuilder Метки  ( Groovy markupbuilder tags ) 
Есть ли способ изменить код из предыдущего ответа <код> import groovy.xml.MarkupBuilder def writer = new StringWriter() def builder = new MarkupBuilder(wri...

3  Должен Grovytestcass методы возврата пустоты?  ( Must groovytestcase methods return void ) 
в документах для groovy.util.grovytestcas ( http: // groovy. CODEHAUS.ORG/API/GROOVY/UTIL/GROOVYTESTCAS.HTML ) Описание говорит «TENTCASE JUNIT TENTCASE в Gro...

0  Невозможно установить Groovy Eclipse Plugin для рационального приложения Developer V9.0 Конфликт на зависимостью  ( Cannot install groovy eclipse plugin for rational application developer v9 0 dep ) 
Я желаю, чтобы установить плагин Greclipse от пружины в мою установку RAD V9.0 и нахожусь в конфликте зависимости, как показано ниже: <код> Cannot complete ...

22  Обучение Ruby на рельсах любая хорошая для Grails?  ( Learning ruby on rails any good for grails ) 
Моя компания находится в процессе начала trails путь. Причина этого заключается в том, что нынешние разработчики тяжелые на Java , но почувствовали необход...

2  Откуда Groovy Grape получают зависимости от?  ( Where does groovy grape get the dependencies from ) 
Инструкции по установке GEB ( http://www.gebish.org/manual/ Текущий / INTRO.HTML # Установка__usage ) сказать, что использовать следующий <код> Grapes аннота...

0  Graalvm: Разрешить внешние сценарии иметь доступ к собственным скомпилированным объектам  ( Graalvm allow external scripts to have access to native compiled objects ) 
Я создаю приложение Java / Groovy, которое также поддерживает скрипты через Groovy. Есть много наследие кода Java и новые детали, написанные в Groovy. Кроме т...

1  Граальсы: метод постоянной ссылки / генерации слизни?  ( Grails method for permalink slug generation ) 
У кого-нибудь есть быстрый метод для генерации слизней и постоянных ссылок в Grails 1.3.7 / 2.0.0.rc1? Основное ограничение: этот метод должен работать с нена...

0  java.lang.noclassdeffoundeRor: org / apache / ivy / core / модуль / дескриптор / descendencedescriptor  ( Java lang noclassdeffounderror org apache ivy core module descriptor dependency ) 
У меня есть проект загрузки SPARE Maven, и я работаю ниже Groovy Script в моем локальном (Intellij IDE) и получая ошибку следующим образом. <Сильный> Сценар...

15  Как выбрать веб-страницу и извлечь все ссылки HREF?  ( How do you parse a web page and extract all the href links ) 
Я хочу разобрать веб-страницу в Groovy и извлечь все ссылки href и связанный с ним связанный текст. Если страница содержала эти ссылки: <код> <a href="htt...

130  Как проверить, если элемент в Groovy Array / Hash / Collection / список?  ( How to check if element in groovy array hash collection list ) 
Как я узнаю, если массив содержит элемент? Я думал, что может быть что-то вроде <Код> [1, 2, 3].includes(1) , который будет оценивать как <код> true . ...

1  Добавление git hash hashes к плагину электронной почты в jenkins  ( Adding git commit hashes to email ext plugin in jenkins ) 
Я ищу вывод результата jenkins, построенный в электронную почту, используя плагин EXT EXT + TEST CROVY TEXT. Подстройка по умолчанию Groovy шаблон слегка ...

3  Как вернуть стоимость от Groovy в Java  ( How to return value from groovy to java ) 
У меня есть страница JSP, привязанная к сервлету, которая управляет Groovy Scripts. Я могу добраться до Groovy Script с сервлета. Но после того, как скрипт ра...

Связанный проблема

2  Использование GroovyClasslassLoader из Java - классы не GC'd 
31  Обнаружение первого и последнего элемента внутри Groovy каждая крышка {} 
38  Печать переменных и значений в Groovy Object 
2  Groovy Markupbuilder Метки 
3  Должен Grovytestcass методы возврата пустоты? 
0  Невозможно установить Groovy Eclipse Plugin для рационального приложения Developer V9.0 Конфликт на зависимостью 
22  Обучение Ruby на рельсах любая хорошая для Grails? 
2  Откуда Groovy Grape получают зависимости от? 
0  Graalvm: Разрешить внешние сценарии иметь доступ к собственным скомпилированным объектам 
1  Граальсы: метод постоянной ссылки / генерации слизни? 
0  java.lang.noclassdeffoundeRor: org / apache / ivy / core / модуль / дескриптор / descendencedescriptor 
15  Как выбрать веб-страницу и извлечь все ссылки HREF? 
130  Как проверить, если элемент в Groovy Array / Hash / Collection / список? 
1  Добавление git hash hashes к плагину электронной почты в jenkins 
3  Как вернуть стоимость от Groovy в Java