Jenkins插件复选框:GUI值与config.xml

时间:2015-10-01 13:13:58

标签: jenkins jenkins-plugins jelly

我正在更改Jenkins插件(https://wiki.jenkins-ci.org/display/JENKINS/Stash+pullrequest+builder+plugin),因为我想为它添加几个选项。

但是,在config.jelly添加了两个新复选框后,它们似乎无法通过GUI在作业配置中正常工作。

config.jelly

<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">
  ...
  <f:advanced>
  ...
    <f:entry title="Report build started to Stash?" field="reportBuildStartedToStash">
      <f:checkbox default="true"/>
    </f:entry>
    <f:entry title="Report build result to Stash?" field="reportBuildStatusToStash">
      <f:checkbox default="true"/>
  </f:advanced>
</j:jelly>

如果我将此插件添加到这样的作业中:enter image description here

然后两个复选框默认为“true”,如预期的那样。这反映在config.xml中:

  <triggers>
    <stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger plugin="stash-pullrequest-builder@1.3.1-SNAPSHOT">
      ...
      <reportBuildStartedToStash>true</reportBuildStartedToStash>
      <reportBuildStatusToStash>true</reportBuildStatusToStash>
    </stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger>
  </triggers>

但是,如果我取消选中这些复选框,保存更改并重新加载“作业配置”页面,则复选框将显示为再次勾选。

这可能是我的.jelly配置有问题吗?我无法理解如何或为何。

作为参考,我的分支在这里:https://github.com/blaffoy/stash-pullrequest-builder-plugin/tree/optional-messages-to-stash

此问题与提出的问题here相同,但建议的解决方案并不能解决问题。也就是说,将<f:checkbox default="true"/>替换为<f:checkbox/>

1 个答案:

答案 0 :(得分:2)

这可以通过为StashBuildTrigger.java中的getter方法添加前缀“is”,例如

来实现
public boolean isReportBuildStartedToStash() 
public boolean isDeleteBuildStartedToStash()
public boolean isReportBuildStatusToStash()

我认为这也适用于“get”前缀,但我还没有测试过它。根据{{​​3}}:

  

为配置字段定义getter,或创建字段   “公共决赛”。这允许Jelly脚本读取值   填充配置页面。

     

需要注意的一些事项:'get'会自动从中删除   方法名称,其余方法名称的第一个字母是   小写。我建议使用Java约定进行命名   方法(例如,使用'get'和使用CamelCase启动getter)   果冻总能找到方法。

示例jenkins plugin doc

  

为getter和setter方法使用前缀get和set。 ......如果   方法返回一个布尔值,使用is或has作为前缀   方法名称。