gpt4 book ai didi

Jenkins Slave - 如何添加或更新环境变量

转载 作者:行者123 更新时间:2023-12-04 07:51:57 26 4
gpt4 key购买 nike

有没有人尝试过使用 Jenkins Rest/API 或任何其他方式在 Jenkins slave 的配置中添加或更新环境变量的方法。

使用 Jenkins Swarm 插件,我创建了一个从站(它使用 JLNP 连接到 Jenkins 主站)但是环境变量(未勾选复选框)并且没有由 Swarm 客户端 jar 创建的环境变量(默认情况下)。用户可以手动添加 if reqd 但我正在寻找是否有办法在从站中添加/更新 ENV 变量。

enter image description here

我想创建多个群从站(每个从站都有不同的工具,具有不同的值,即 slave01 JAVA_HOME=/path/jdk1.7.0.67 和其他 slave02 JAVA_HOME=/path/jdk1.8.0_45 等)。

我试着调查 http://javadoc.jenkins-ci.org/hudson/model/Node.htmlhttp://javadoc.jenkins-ci.org/hudson/model/Slave.htmlhttp://javadoc.jenkins-ci.org/hudson/slaves/DumbSlave.html 但是 它不提供任何方法/方式来设置 Node 的属性/ENV 变量。没有 setNodeProperties 或类似的东西(如果这是设置 ENV 变量/属性的正确方法)。

我正在寻找的是一种将以下变量添加到从站的方法。

enter image description here

这篇文章(由 Villiam 撰写)反射(reflect)有人尝试用 groovy 做同样的事情,但我不知道他如何使用相同的 API to Create/Manage Nodes 设置 ENV 变量。

Jenkins-CLI 可以选择运行 groovy 脚本:
java -jar path/to/jenkins-cli.jar -s http://localhost:8080 groovy path/to/script
脚本:

import jenkins.model.*
import hudson.model.*
import hudson.slaves.*
Jenkins.instance.addNode(new DumbSlave("test-script","test slave description","C:\\Jenkins","1",Node.Mode.NORMAL,"test-slave-label",new JNLPLauncher(),new RetentionStrategy.Always(),new LinkedList()))

(有关其他选项,请参阅文档: http://javadoc.jenkins-ci.org/ )

您还可以使用以下命令运行交互式 groovy shell
java -jar jenkins-cli.jar -s http://localhost:8080 groovysh

最佳答案

如果未勾选“环境变量”复选框,则可以使用的方法是使用 nodeProperties.add(new EnvironmentVariablesNodeProperty)
部署时我用来在 Jenkins 上设置环境变量的完整脚本如下(打算用 jenkins-cli.jar 调用):

import jenkins.model.*
import hudson.model.*
import hudson.slaves.*

String node_name = args[0]
String env_key = args[1]
String env_value = args[2]

instance = Jenkins.getInstance()
if (node_name == "master") {
node = instance
} else {
instance.getNode(node_name)
}
props = node.nodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)

if(props.empty) {
def entry = new EnvironmentVariablesNodeProperty.Entry(env_key, env_value)
def evnp = new EnvironmentVariablesNodeProperty(entry)
node.nodeProperties.add(evnp)
} else {
for (prop in props) {
prop.envVars.put(env_key, env_value)
}
}

instance.save()

关于Jenkins Slave - 如何添加或更新环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com