You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins插件开发:如何在config.jelly中自动填充历史配置值

Jenkins插件配置表单自动填充历史配置值实现方案

核心思路

在config.jelly中通过Jenkins提供的Jelly变量,获取当前Job的历史构建记录,从中提取同类型插件的历史配置值,再将值绑定到表单字段上。

具体实现步骤(以构建步骤插件为例)

假设你的插件是一个自定义构建步骤(Builder),字段名为test,按以下方式修改config.jelly:

  1. 获取当前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}" />
    
  2. 从历史构建中提取目标配置值
    遍历历史构建的所有构建步骤,找到同类型的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类全路径。

  3. 绑定值到表单字段
    修改原有的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:42:38