gpt4 book ai didi

java - 构建中的 Jenkins View 涵盖多个插件执行(插件开发)

转载 作者:行者123 更新时间:2023-12-01 18:09:49 29 4
gpt4 key购买 nike

我目前正在开发一个与 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com