Как установить переменную среды Jenkins на основе параметра задания?

У меня есть проект, где мне нужно установить переменную среды на основе параметра выбора, который пользователь выбирает. Каждый проект имеет зависимость от проекта. Я хотел бы, чтобы пользователь выбирал проект, а затем загружал имя темы из файла свойств. Что-то вроде

proj1=theme1
proj2=theme2
proj3=theme3

Если пользователь выбирает proj1 из параметра выбора PROJECT_NAME, я хочу автоматически установить THEME_NAME как theme1. Какой был бы лучший способ сделать это?

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

Ответ 1

Ага, я нашел простое решение! Использование плагина EnvInject в конфигурации заданий:

Среда сборки

[X] Внедрить переменные среды в процесс сборки

Путь к файлу свойств C:\pathtofile\mapping.properties

Свойства Содержимое THEME_NAME=${${PROJECT_NAME}}

Работает как шарм!

Ответ 2

Надеюсь, вы говорите о параметризованной сборке в jenkins. Поэтому, если вы укажете параметр выбора имя PROJECT_NAME и следующие варианты: -

proj1
proj2
proj3

тогда Jenkins автоматически назначит одно из этих значений (например, proj1, proj2, proj3) переменной PROJECT_NAME в соответствии с выбором, инициированным для запуска сборки. Вы можете использовать $PROJECT_NAME как переменную где угодно на странице конфигурации задания.

Но вам нужны значения (theme1, theme2, theme3).. такое сопоставление, насколько мне известно, не обеспечивается дженкинсами.

Однако вы можете использовать оболочку сборки для выполнения вашего сопоставления: -

if [ $PROJECT_NAME = "proj1" ] 
    then <your logic goes here for implementing theme1>
fi
.....

Ответ 3

Я предоставлю альтернативное решение, которое я использовал. Я надеюсь, что он также может быть полезен для других.

Я использовал Plug Injector Plugin. Перейдите в диспетчер плагинов и установите его. введите описание изображения здесь

Проверьте Inject environment variables to the build process свойство Среда сборки. Определите следующее в Groovy Script:

введите описание изображения здесь