构建中的Jenkins视图涵盖了多个插件执行(插件开发)



我目前正在开发一个与管道兼容的Jenkins插件。插件在另一个程序中执行测试,将测试结果保存为工件,并在构建中创建报告视图。

我的问题是,如果我多次执行插件(比如在不同的管道阶段(,它将为每次执行创建一个新的报告视图。所有这些视图都包含相同的内容(最新的执行结果(,因为Jenkins为所有页面只保存了一组变量。每次执行插件时,这些变量都会被覆盖。

我的观点是扩展Jenkins插件教程中描述的基本操作

public class xxxAction implements RunAction2

从我的xxxBuilder.java 调用

@Override
public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {
...
run.addAction(new xxxAction())
...
}

我如何在不创建新视图的情况下检查/访问我已经存在的视图,或者加载Jenkins上次执行插件时保存的变量值。我的目标是在构建中有一个报告视图,在那里我可以显示我的插件在这个构建中所有执行的数据。

在筛选codota上的代码片段时非常幸运,我成功地用每次执行替换了我的视图(因此重新计算了内容(,同时通过最终的自定义对象保留了其中的数据。我添加和替换这样的操作(也有替换功能(:

if (run.getActions(PROVEtechAction.class).isEmpty()) {
run.addAction(new PROVEtechAction());
} else {
run.removeAction(run.getAction(PROVEtechAction.class));
run.addAction(new PROVEtechAction());
}

我存储数据的对象如下所示:

public final class ResultObjects {
private static ArrayList<ResultObjects> TestResultList = new ArrayList<>();
public static ArrayList<ResultObjects> getTestResultList() {
final ArrayList<ResultObjects> res = new ArrayList<>(TestResultList);
return res;
}
public String someData;
...
public ResultObjects() {
TestResultList.add(this);
this.someData = null;
...
}
}

这基本上只是一个静态列表,我将结果添加到其中。

最新更新