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

Mar*_*rty 4 jenkins

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

proj1=theme1
proj2=theme2
proj3=theme3
Run Code Online (Sandbox Code Playgroud)

如果用户proj1PROJECT_NAME选择参数中选择,我想自动设置THEME_NAMEtheme1. 解决这个问题的最佳方法是什么?

每当添加新项目时,我都不想修改 Jenkins 作业配置。相反,我想将映射放在一个文件中,这样我就可以将它放在版本控制中。

小智 8

有时,能够通过 Jenkins 设置参数,然后将这些参数作为 Jenkins env 传递,这真是太好了。变量。密码之类的东西可以在参数中受到保护,但不能通过环境注入器插件进行保护。

执行此操作的示例:

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')
}
Run Code Online (Sandbox Code Playgroud)

只需在 UI 中设置参数即可:

在此输入图像描述


Aya*_*fov 6

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

我使用了 环境注入器插件。转到插件管理器并安装它。 在此处输入图片说明

检查Build Environment 的Inject environment variables to the build process属性。在 Groovy 脚本中定义以下内容:

在此处输入图片说明


Mar*_*rty 5

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

构建环境

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

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

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

奇迹般有效!