在jenkins中获取后期构建环境变量

时间:2014-11-09 12:48:16

标签: jenkins jenkins-plugins

尝试向我的插件添加新功能时遇到以下问题。 目标是获取在构建期间被覆盖的环境变量的更改 例如:一个字符串变量(param1),它从shell脚本中获取新值 所以,我添加了以下代码:

@Extension
public class MyRunListener extends RunListener<Run>{

    @Override
    public Environment setUpEnvironment(AbstractBuild build, Launcher launcher, 
                     BuildListener listener) throws IOException, InterruptedException {
        return new Environment(){
            @Override
            public boolean tearDown(AbstractBuild build, BuildListener listener) 
                    throws IOException, InterruptedException {
                EnvVars envVars = build.getEnvironment(listener);
                String param1 = envVars.get("param1");
                return super.tearDown(build, listener);
            }
        };
    }

}

运行作业时:param1 = defaultValue。然后工作变为:param1 = newValue。
tearDown(...)方法中,我试图获取param1的新值,但是我在变化之前得到了变量列表,其中 param1 = defaultValue 而不是由shell命令覆盖的新值,其中 param1 = newValue
是否有可能以编程方式获得新值?我知道我可以写入属性文件然后阅读它,但我正在寻找&#34;在舞台后面#34;解。

2 个答案:

答案 0 :(得分:0)

在Java中,有一种获取环境变量当前值的方法是:

System.getProperty("param1")

答案 1 :(得分:0)

@Moosh,

不,环境变量无法从您的Java代码上下文向上传递到Jenkins引擎。如您所知,您必须将其写入文件然后解析它。

幸运的是,它并不像你担心的那样相当。只需将值写入Jenkins控制台日志,然后在运行结束时通过

获取日志文本,而不是创建单独的属性文件。
$ curl http://jenkins-host/job/job-name/number/consoleText

希望有所帮助。