Jenkins插件开发:如何在config.jelly中自动填充历史配置值
Jenkins插件配置表单自动填充历史配置值实现方案
核心思路
在config.jelly中通过Jenkins提供的Jelly变量,获取当前Job的历史构建记录,从中提取同类型插件的历史配置值,再将值绑定到表单字段上。
具体实现步骤(以构建步骤插件为例)
假设你的插件是一个自定义构建步骤(Builder),字段名为test,按以下方式修改config.jelly:
获取当前Job与历史构建
在Jelly中通过${it}(当前Builder实例)拿到所属Job,再获取最近一次构建:<j:set var="job" value="${it.owner}" /> <j:set var="lastBuild" value="${job.lastBuild}" />如果需要优先取成功完成的构建,可替换为:
<j:set var="lastBuild" value="${job.lastSuccessfulBuild}" />从历史构建中提取目标配置值
遍历历史构建的所有构建步骤,找到同类型的Builder,取出test字段的历史值:<j:set var="lastTestValue" value="" /> <j:if test="${lastBuild != null}"> <j:forEach var="builder" items="${lastBuild.builders}"> <j:if test="${builder.class.name == 'com.yourpackage.YourCustomBuilder'}"> <j:set var="lastTestValue" value="${builder.test}" /> </j:if> </j:forEach> </j:if>注意替换
com.yourpackage.YourCustomBuilder为你实际的Builder类全路径。绑定值到表单字段
修改原有的textbox标签,添加value属性绑定历史值:<strong class="required-field">Test</strong> <f:entry field="test"> <f:textbox placeholder="test input" value="${lastTestValue}" /> </f:entry>
针对Job属性插件的调整
如果你的插件是Job级别的属性(JobProperty),只需调整获取历史配置的逻辑:
<j:set var="job" value="${it.owner}" /> <j:set var="lastBuild" value="${job.lastBuild}" /> <j:set var="lastTestValue" value="" /> <j:if test="${lastBuild != null}"> <j:set var="lastProperty" value="${lastBuild.getAction(com.yourpackage.YourJobProperty.class)}" /> <j:if test="${lastProperty != null}"> <j:set var="lastTestValue" value="${lastProperty.test}" /> </j:if> </j:if>
注意事项
- 确保你的Builder/JobProperty类实现
Serializable接口,否则配置无法被序列化到构建记录中。 - 如果历史构建中有多个同类型插件实例,上述逻辑会取最后一个的配置值,可根据需求调整遍历规则。
- 无历史构建时,
value为空,表单会保持默认的占位符状态。
内容的提问来源于stack exchange,提问作者Coolcodehere
相关产品推荐
相关产品推荐

