floatBox.jelly中没有显示的值 - Jenkins插件开发

时间:2014-11-19 17:11:40

标签: maven jenkins jenkins-plugins

我正在开发自己的自定义Jenkins插件,该插件可以生成GT Metrix的报告。缺乏文件使这非常困难。

到目前为止我有什么:

我已成功构建了一个可编译的插件。您在全局Jenkins设置中设置用户名和API密钥。您在构建配置中设置了一个网站。构建项目时,它将运行GT Metrix报告并等待它完成,然后从报告中下载所有信息。我使用floatingBox.jelly设置了一个项目操作,HTML显示在项目页面上。

我需要什么:

现在我有了报告并且我在项目页面上显示了floatingBox.jelly,我希望它显示报告中的值,所以我${from.report.pageLoadTime}。我相信我已经正确地设置了一切。如果我执行${from.report},则会显示org.jenkinsci.plugins.gtmetrix.GtMetrixReportResource@1bd5b1dc之类的引用。但是额外的.pageLoadTime没有显示任何内容。我不知道为什么它拥有资源,但它不会从该资源内部调用任何函数。

源代码 https://github.com/chrislondon/jenkins-gtmetrix-plugin

1 个答案:

答案 0 :(得分:1)

你的果冻代码需要看起来像这样

<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt" xmlns:local="local">
    <j:set var="lastResult" value="${from.lastResult}"/>

    <div class="content">
        <h2>GT Metrix Summary</h2>

        <j:if test="${lastResult != null}">
            <h3>Page Load Time: ${lastResult.getPageLoadTime()}</h3>

        </j:if>

        <j:if test="${lastResult == null}">
            Unable to find report. ${report}
        </j:if>

    </div>
</j:jelly>

我向你的班级GtMetrixBuildAction添加了一个方法

public String getPageLoadTime(){
    return getReport().getPageLoadTime();
}

我认为您的主要问题是您的报告数据所在的最终课程不是可描述的,因此果冻代码无法找到它。你所有的其他课程都是可描述的


EDIT 如何创建一个可描述的类

您可以通过继承AbstractDescribableImpl

使您的类可描述
public abstract class YourClass extends AbstractDescribableImpl<YourClass> 
    implements Comparable, Describable<YourClass> ...

我认为你不需要Comparable,但我现在无法检查。然后,您将必须修复具体类

这是一个我prepared earlier

您可能还需要一些果冻文件来显示它,可能使用属性