我有一个项目,我需要根据用户选择的选择参数设置环境变量。每个项目都有一个主题项目依赖项。我希望用户选择项目,然后从属性文件加载主题名称。类似于
proj1=theme1 proj2=theme2 proj3=theme3
如果用户从PROJECT_NAME选择参数中选择proj1,我想自动将THEME_NAME设置为theme1,那么最好的方法是什么?我不想在添加新项目时修改Jenkins作业配置,而是希望将Map保存在一个文件中,这样我就可以在版本控制中使用它。
PROJECT_NAME
proj1
THEME_NAME
theme1
vcudknz31#
我将提供一个我使用过的替代解决方案。我希望它也能对其他人有用。我用的是Environment Injector Plugin .去插件管理器安装它.
检查构建环境的**Inject environment variables to the build process**属性。在Groovy脚本中定义以下内容:
Inject environment variables to the build process
piwo6bdm2#
啊哈,我找到了一个简单的解决方案!使用EnvInject插件,在作业配置中:
[X]向构建过程注入环境变量属性文件路径C:\pathtofile\mapping.properties属性内容THEME_NAME=${${PROJECT_NAME}}工作起来像一个魅力!
C:\pathtofile\mapping.properties
THEME_NAME=${${PROJECT_NAME}}
nxowjjhe3#
有时候,能够通过Jenkins设置参数并将其作为Jenkins env.vars进行设置是很好的。密码之类的东西可以在参数中进行保护,但不能通过环境注入器插件进行保护。下面是一个示例:
environment { AWS_ECR_ACCOUNT_ID="${params.AWS_ECR_ACCOUNT_ID}" AWS_ACCESS_KEY_ID="${params.AWS_ACCESS_KEY_ID}" AWS_SECRET_ACCESS_KEY="${params.AWS_SECRET_ACCESS_KEY}" AWS_SESSION_TOKEN="${params.AWS_SESSION_TOKEN}" } parameters { string(name: 'AWS_ECR_ACCOUNT_ID', defaultValue: '', description: 'AWS ECR account ID') password(name: 'AWS_ACCESS_KEY_ID', defaultValue: '', description: 'The AWS access key ID') password(name: 'AWS_SECRET_ACCESS_KEY', defaultValue: '', description: 'The AWS secret access key') password(name: 'AWS_SESSION_TOKEN', defaultValue: '', description: 'The AWS session token') }
只需在UI中设置参数:
3okqufwl4#
我希望你在jenkins中谈论的是参数化构建。所以如果你给予选择参数名称PROJECT_NAME和选择是:-
proj1 proj2 proj3
然后,Jenkins会根据启动构建所触发的选择,自动将这些值之一(即proj 1、proj 2、proj 3)分配给变量PROJECT_NAME。实际上,您可以在作业配置页面的任何位置使用$PROJECT_NAME作为变量。但是你需要值(theme 1,theme 2,theme 3)..这样Map到我的知识不是jenkins提供的。但是,您可以使用构建shell来执行Map:-
if [ $PROJECT_NAME = "proj1" ] then <your logic goes here for implementing theme1> fi .....
4条答案
按热度按时间vcudknz31#
我将提供一个我使用过的替代解决方案。我希望它也能对其他人有用。
我用的是Environment Injector Plugin .去插件管理器安装它.
检查构建环境的**
Inject environment variables to the build process
**属性。在Groovy脚本中定义以下内容:piwo6bdm2#
啊哈,我找到了一个简单的解决方案!使用EnvInject插件,在作业配置中:
[X]向构建过程注入环境变量
属性文件路径
C:\pathtofile\mapping.properties
属性内容
THEME_NAME=${${PROJECT_NAME}}
工作起来像一个魅力!
nxowjjhe3#
有时候,能够通过Jenkins设置参数并将其作为Jenkins env.vars进行设置是很好的。密码之类的东西可以在参数中进行保护,但不能通过环境注入器插件进行保护。
下面是一个示例:
只需在UI中设置参数:
3okqufwl4#
我希望你在jenkins中谈论的是参数化构建。所以如果你给予选择参数名称PROJECT_NAME和选择是:-
然后,Jenkins会根据启动构建所触发的选择,自动将这些值之一(即proj 1、proj 2、proj 3)分配给变量PROJECT_NAME。实际上,您可以在作业配置页面的任何位置使用$PROJECT_NAME作为变量。
但是你需要值(theme 1,theme 2,theme 3)..这样Map到我的知识不是jenkins提供的。
但是,您可以使用构建shell来执行Map:-