我目前正在开发一个与 Pipeline 兼容的 Jenkins 插件。该插件在另一个程序中执行测试,将测试结果保存为工件,并在构建中创建报告 View 。
我的问题是,如果我多次执行该插件(例如在不同的管道阶段),它将为每次执行创建一个新的报告 View 。所有这些 View 都包含相同的内容(最新的执行结果),因为 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())
...
}
如何在不创建新 View 的情况下检查/访问已有的 View 或加载 Jenkins 在上次执行插件时保存的变量值。 我的目标是在构建中拥有一个报告 View ,我可以在其中显示此构建中插件的所有执行的数据。
最佳答案
在筛选 codota 上的代码片段时非常幸运,我设法在每次执行时替换我的 View (因此重新计算内容),同时通过最终的自定义对象保留其中的数据。 我像这样添加和替换操作(也有替换函数):
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;
...
}
}
这基本上只是一个静态列表,我将结果添加到其中。
关于java - 构建中的 Jenkins View 涵盖多个插件执行(插件开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486729/