尝试向我的插件添加新功能时遇到以下问题。
目标是获取在构建期间被覆盖的环境变量的更改
例如:一个字符串变量(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;解。
答案 0 :(得分:0)
在Java中,有一种获取环境变量当前值的方法是:
System.getProperty("param1")
答案 1 :(得分:0)
@Moosh,
不,环境变量无法从您的Java代码上下文向上传递到Jenkins引擎。如您所知,您必须将其写入文件然后解析它。
幸运的是,它并不像你担心的那样相当。只需将值写入Jenkins控制台日志,然后在运行结束时通过
获取日志文本,而不是创建单独的属性文件。$ curl http://jenkins-host/job/job-name/number/consoleText
希望有所帮助。