如何根据作业参数设置Jenkins环境变量?

时间:2016-01-08 01:17:48

标签: jenkins

我有一个项目,我需要根据用户选择的选项参数设置环境变量。每个项目都有一个主题项目依赖项。我想让用户选择项目,然后从属性文件中加载主题名称。像

这样的东西
proj1=theme1
proj2=theme2
proj3=theme3

如果用户从proj1选项参数中选择PROJECT_NAME,我想自动将THEME_NAME设置为theme1。什么是最好的方法呢?

每当添加新项目时,我都不想修改Jenkins作业配置。相反,我希望将映射放在文件中,以便我可以在版本控制中使用它。

4 个答案:

答案 0 :(得分:3)

啊哈,我找到了一个简单的解决方案!使用EnvInject插件,在作业配置中:

  

构建环境

     

[X]将环境变量注入构建过程

     

属性文件路径C:\pathtofile\mapping.properties

     

属性内容THEME_NAME=${${PROJECT_NAME}}

像魅力一样!

答案 1 :(得分:3)

我将提供我使用的替代解决方案。我希望它对其他人也有用。

我使用了Environment Injector Plugin。转到插件管理器并安装它。 enter image description here

检查构建环境 print(string.match(conf, "'(.-)'")) 属性。在Groovy脚本中定义以下内容:

enter image description here

答案 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')
}

只需在用户界面中设置参数:

enter image description here