我正在开发自己的自定义Jenkins插件,该插件可以生成GT Metrix的报告。缺乏文件使这非常困难。
到目前为止我有什么:
我已成功构建了一个可编译的插件。您在全局Jenkins设置中设置用户名和API密钥。您在构建配置中设置了一个网站。构建项目时,它将运行GT Metrix报告并等待它完成,然后从报告中下载所有信息。我使用floatingBox.jelly设置了一个项目操作,HTML显示在项目页面上。
我需要什么:
现在我有了报告并且我在项目页面上显示了floatingBox.jelly,我希望它显示报告中的值,所以我${from.report.pageLoadTime}
。我相信我已经正确地设置了一切。如果我执行${from.report}
,则会显示org.jenkinsci.plugins.gtmetrix.GtMetrixReportResource@1bd5b1dc
之类的引用。但是额外的.pageLoadTime
没有显示任何内容。我不知道为什么它拥有资源,但它不会从该资源内部调用任何函数。
答案 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
您可能还需要一些果冻文件来显示它,可能使用属性