Jenkins Slave - How to add or update ENVIRONMENT variables

后端 未结 3 1402

Has anyone tried a way to add or update an ENVIRONMENT variable in a Jenkins slave\'s configuration using Jenkins Rest/API or any other way.

Using Jenkins Swarm plugin,

3条回答
  •  我寻月下人不归
    2021-02-06 01:08

    A method that will work if the "Environment Variables" checkbox has not been ticked is to use nodeProperties.add(new EnvironmentVariablesNodeProperty)

    The full script I'm using to set Environment Variables on Jenkins when deploying is below (intended to be called with 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()
    

提交回复
热议问题