Jenkins插件 - 环境变量

时间:2013-01-08 11:45:54

标签: variables plugins jenkins environment

我正在使用Jenkins和Testswarm以及pluginforked sources)。

我希望获得包含Jenkins作业名称,内部版本号和svn修订号的Testswarm的“作业名称”。

将JOB_NAME置于配置字段中无济于事,该变量不会被其值替换。

所以我修改了插件源代码以获取Jenkins环境变量,但我得到的只是“null”。

这是罪魁祸首代码。 (在第205行的src / main / java / com / javaclimber / jenkins / testswarmplugin / TestSwarmBuilder.java中)

我研究了很多关于这个功能的事情,但我没有找到获取变量的实例。

public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
    ...
EnvVars envVars = build.getEnvironment(listener);
    ...
    envVars.get("JOB_NAME")
}

我在Java方面并不放心,而且我在这一点上陷入困​​境。 有什么想法吗?

更新:java使用的版本
java版“1.6.0_24”
OpenJDK运行时环境(IcedTea6 1.11.5)(6b24-1.11.5-0ubuntu1~10.04.2)
OpenJDK 64位服务器VM(内置20.0-b12,混合模式)

4 个答案:

答案 0 :(得分:9)

更换

EnvVars envVars = build.getEnvironment(listener);

通过

EnvVars envVars = new EnvVars();
envVars = build.getEnvironment(listener);

做了诀窍......

答案 1 :(得分:1)

您使用的是哪个版本的Java? 根据{{​​3}},要获取环境变量,您需要添加以下内容:

String job_name = System.getenv("JOB_NAME");

你试过这个吗?

另外,我不确定配置字段是什么样的,但您是否尝试使用$JOB_NAME代替JOB_NAME

答案 2 :(得分:0)

Jenkins管道似乎在服务器上执行,因此原始帖子可能缺少为代理定义的变量(通过服务器的代理定义或通过代理的OS)。

我不知道获取代理环境的詹金斯管道方法。

答案 3 :(得分:0)

我偶然发现了这个并搜索了一段时间以寻找解决方案,因此对于下一个用户的答案是:如果您需要环境变量,请覆盖

df # id org num #1 1 <NA> NA #2 2 Org-A 1 #3 3 Org-A;Org-B 2 #4 4 Org-C 1 #5 5 Org-A;Org-B;Org-C 3

代替

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

并使用参数中的 public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener)。 (另见https://issues.jenkins.io/browse/JENKINS-29144