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

标签 java jenkins jenkins-plugins jelly

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

相关文章:

java - 构建时 Jenkins 管道错误

jenkins - 如何远程触发Jenkins构建并传递参数

svn - Jenkins 检测到 SVN 更改但不更新工作区?

java - 将日期字符串剪切为变量

java - 从相机捕获图像并设置到android中的 ListView 中

git - 具有多个项目和 git 分支的 Jenkins

jenkins - 为 Jenkins 构建故障分析器插件 : Match Text returns Invalid Url

java - 处理响应代码 : 403 for URL with clojure enlive

java - 检查一个类是否是泛型类型

jenkins - Jenkins 有办法停止或减少重复的工作吗?