当前位置: 首页 > 知识库问答 >
问题:

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

谭昱
2023-03-14

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

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

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

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())) 

java-jar jenkins-cli.jar-s http://localhost:8080 groovysh

共有1个答案

郭逸清
2023-03-14

如果“Environment Variables”复选框未被勾选,则可以使用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()
 类似资料:
  • 我想和Kubernetes一起经营jenkins。我能够成功地使用jenkins kubernetes插件连接到kubernetes。现在,我正在运行一个管道示例,但是在运行过程中,我总是得到一个错误,上面写着: 它就挂在那里。如果我使用检查pods,我会看到pod正在运行,然后状态更改为completed,然后它就消失了。然后另一个名字相似的豆荚,开始和结束,循环继续。这些豆荚的最后一种状态如下

  • 我想知道以下情况是否可能,请帮助我:- 情景1:- 我把我的本地系统作为Jenkins主系统,每次我需要一个从系统来运行自动化测试脚本时,docker容器就会作为Jenkins从系统旋转起来,我的脚本就会在从系统上执行,执行完成后容器就会被销毁。 我可以旋转多个容器作为Jenkins从本地系统作为Jenkins主。 谢谢

  • 使用ec2插件为Jenkins上的耦合作业配置了自动从机。在连接到主服务器之前,我需要重写从服务器的几个环境变量。下面是init脚本,它在作为slave连接之前运行。我做错了什么。谁能帮帮我吗? Jenkins版本:1.656 Amazon EC2插件:1.31

  • 我正在尝试将我的windows slave作为服务连接到jenkins 2.88。我通过webstart启动了这个奴隶,然后运行jenkins奴隶。exe install来安装服务。第二次运行作业时,从svn中检出内容,我得到以下错误: 该服务正在以“我的用户”身份运行,以使其具有所有必要的权限。简而言之,我的问题是jenkins是否正确支持从服务运行jenkins slave jar的方法。例如

  • 然而,在我创建了另一个docker服务器并创建了其中两个服务器的群并再次尝试运行jenkins jobs之后,它仍然只在原始服务器(现在也是一个管理器)上部署容器。我希望swarm能够平衡负载,并在swarm中均匀地分配新创建的容器。我错过了什么? 也许我必须使用服务吗?

  • 背景信息:我有一个Kubernetes集群,有3个linux节点和1个windows节点。从詹金斯大师到特工的一切都在一个由库伯奈斯控制的容器或吊舱里。 我试图将Windows代理(在容器中)连接到Linux主服务器(也在容器中),但在使用hudson.remoting.jnlp将从服务器连接到主服务器时遇到了问题。 以下是该命令的错误: 我尝试匹配master和slave的Java版本,使用最新