在Jenkins插件中设置envvars

时间:2017-12-28 16:02:09

标签: java jenkins jenkins-plugins

我正在尝试开发新的Jenkins插件。我是从詹金斯提供的hello-world archetype开始的。我的插件工作正常!

Bun现在我想从我的插件中添加一些环境变量。我使用过密码来做到这一点

public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) {

    ...
    EnvVars envVars = run.getEnvironment(listener);
    envVars.put("SOME_VARIABLE", "SOME_VALUE");
    ...

}

但它不起作用。我试图在下一个构建步骤中使用此变量并且什么也没得到。我用谷歌搜索了它并没有明确的描述。现有插件的源代码(EnvInject等)也没有帮助。

我做错了什么?任何人都可以提供一些样品吗?

1 个答案:

答案 0 :(得分:0)

来自我的插件......

 private void putEnvVar(String key, String value) throws IOException {
     Jenkins jenkins = Jenkins.getInstance();
     DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties = jenkins.getGlobalNodeProperties();
     List<EnvironmentVariablesNodeProperty> envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class);

     EnvironmentVariablesNodeProperty newEnvVarsNodeProperty = null;
     EnvVars envVars = null;

     if (envVarsNodePropertyList == null || envVarsNodePropertyList.isEmpty()) {
        newEnvVarsNodeProperty = new hudson.slaves.EnvironmentVariablesNodeProperty();
        globalNodeProperties.add(newEnvVarsNodeProperty);
        envVars = newEnvVarsNodeProperty.getEnvVars();
     } else {
        envVars = envVarsNodePropertyList.get(0).getEnvVars();
     }
     envVars.put(key, value);
  }