如何在jenkins服务器上存储变量并通过作业更改它们



我很难找到一种方法,在Jenkins服务器上存储一些全局变量,然后通过作业不断更新。我的用例是,只要有任何新的构建可用,它就会触发下游作业。此外,还有一些工作在一周内定期运行。我想将最新的内部版本号存储在服务器上,这样每当运行定期作业时,它都会在最新的版本上运行。我尝试过保存全局变量,但我可以使用envInject在作业中更改它,但这种更改不会全局反映。

在服务器作用域中存储参数的一个选项是使用全局环境变量
可通过以下方式获得:Manage Jenkins->配置系统->全局属性->环境变量
这些参数可用于所有作业,并且可以将参数存储在"服务器范围"的范围内,然后该范围将在任何地方都可用
然后,您可以使用以下groovy方法通过代码更新或设置它们:

@NonCPS
def updateGlobalEnvVariable(String name, String value) {
def globalNodeProperties = Jenkins.getInstance().getGlobalNodeProperties()
def envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
if (envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0) {
def envVarsNodePropertyClass = this.class.classLoader.loadClass('hudson.slaves.EnvironmentVariablesNodeProperty')
globalNodeProperties.add(envVarsNodePropertyClass.newInstance())
}
envVarsNodePropertyList.get(0).getEnvVars().put(name, value)
}

此函数最好放在共享库中,每个需要更新全局参数的作业都可以从中调用它。

您可能正在寻找https://plugins.jenkins.io/envinject/插件,它正是你想要的。

你也可以在这里用你选择的关键词搜索插件:https://plugins.jenkins.io/ui/search?sort=relevance&类别=&labels=&view=瓷砖&page=1&query=

最新更新