我有一个项目,我需要根据用户选择的选项参数设置环境变量。每个项目都有一个主题项目依赖项。我想让用户选择项目,然后从属性文件中加载主题名称。像
这样的东西proj1=theme1
proj2=theme2
proj3=theme3
如果用户从proj1
选项参数中选择PROJECT_NAME
,我想自动将THEME_NAME
设置为theme1
。什么是最好的方法呢?
每当添加新项目时,我都不想修改Jenkins作业配置。相反,我希望将映射放在文件中,以便我可以在版本控制中使用它。
答案 0 :(得分:3)
构建环境
[X]将环境变量注入构建过程
属性文件路径
C:\pathtofile\mapping.properties
属性内容
THEME_NAME=${${PROJECT_NAME}}
像魅力一样!
答案 1 :(得分:3)
我将提供我使用的替代解决方案。我希望它对其他人也有用。
我使用了Environment Injector Plugin。转到插件管理器并安装它。
检查构建环境的 print(string.match(conf, "'(.-)'"))
属性。在Groovy脚本中定义以下内容:
答案 2 :(得分:0)
我希望你在谈论jenkins中的参数化构建。因此,如果您将选项参数命名为PROJECT_NAME,则选项为: -
proj1
proj2
proj3
然后,Jenkins将根据触发启动构建的选择自动将其中一个值(即proj1,proj2,proj3)分配给变量PROJECT_NAME。您可以在作业配置页面的任何位置使用$ PROJECT_NAME作为变量。
但是你需要值(theme1,theme2,theme3).. jenkins不提供我的知识映射。
但是,您可以使用构建shell来执行映射: -
if [ $PROJECT_NAME = "proj1" ]
then <your logic goes here for implementing theme1>
fi
.....
答案 3 :(得分:0)
有时候可以通过Jenkins设置参数,然后像Jenkins env一样滴加参数,这是很高兴的。 vars。密码之类的东西可以在参数中保护,但不能通过Environment Injector插件来保护。
执行此操作的示例:
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')
}
只需在用户界面中设置参数: