我正在尝试构建一个Jenkins Post build plugin,在其中必须处理JSON文件(包含测试结果),并在执行构建后将其显示在tabular format中的Jenkins中。

到现在为止,已完成以下步骤:


创建了Jenkins插件
能够检索JSON文件内容并将其读取为Google gson JSONElement
建立BuildAction(扩展Action)以显示结果。
在与index.jelly对应的view(对于BuildActionBuildAction)中,尝试将JSON文件中的每条记录显示为一行。


JSON文件样本:

{
    "records": [{
        "objectProps": {
            "OTYPE": "TEST",
            "NAME": "testMethodError",

        }
    },
    {
        "objectProps": {
            "OTYPE": "TEST",
            "NAME": "testMethodFail",
        }
    }]
}


BuildAction类:

public class BuildAction implements Action {
    private JsonElement results;
    private Run<?, ?> build;
    TaskListener listener;

    // this value referred as `it.results` in `index.jelly`
    public JsonArray getResults(){
        return results.getAsJsonObject().get("records").getAsJsonArray();
    }

}


高于index.jelly类的当前BuildAction

<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout">
    <l:layout>
        <st:include it="${it.build}" page="sidepanel.jelly"/>
        <l:main-panel>
            <table> Test - Wise Results
             <j:forEach items="${it.results}" var="i">
                <tr><td>Test case name: ${i}</td></tr>
             </j:forEach>
            </table>
        </l:main-panel>

    </l:layout>
</j:jelly>


实际行为:

到目前为止,${results}的值为JSONArray类型。在果冻中,forEach可以遍历并使用var i(语法${i})获取记录。 i引用records JSONArray中的每个记录。现在,我想使用objectProps.NAME访问i字段,我不知道Jelly中的语法可以实现相同的目的。

预期的行为:

我想遍历JSON文件中的records数组,并将每个child / jsonObject作为一个表行(及其值作为对应的列)进行迭代。

与此类似的东西(访问NAME值):

<j:forEach items="${it.results}" var="i">
   <tr><td>Test case name: ${i}."objectProps"."NAME"</td></tr>
</j:forEach>


在使用tableJSON中构建Jelly时需要帮助。也可以采用任何其他方式来实现此目的(建议相同时请提供邮政编码示例)。

注意:也欢迎与Groovy相关的答案,因为Jenkins同时支持Jelly and GroovyView

最佳答案

我有兴趣解决您的问题,但可能无法100%确定答案,因为我无法在本地进行测试。

在您的示例中,您是否尝试过使用${i.objectProps.NAME}${i."objectProps"."NAME"}代替${i}."objectProps"."NAME"

您还可以查看g:evaluate是否可用,因为果冻可能在未明确告知变量的情况下无法评估您的变量。您可以在g:evaluate here.上找到一些文档。

08-06 11:53