我正在更改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>
然后两个复选框默认为“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/>
答案 0 :(得分:2)
这可以通过为StashBuildTrigger.java
中的getter方法添加前缀“is”,例如
public boolean isReportBuildStartedToStash()
public boolean isDeleteBuildStartedToStash()
public boolean isReportBuildStatusToStash()
我认为这也适用于“get”前缀,但我还没有测试过它。根据{{3}}:
为配置字段定义getter,或创建字段 “公共决赛”。这允许Jelly脚本读取值 填充配置页面。
需要注意的一些事项:'get'会自动从中删除 方法名称,其余方法名称的第一个字母是 小写。我建议使用Java约定进行命名 方法(例如,使用'get'和使用CamelCase启动getter) 果冻总能找到方法。
为getter和setter方法使用前缀get和set。 ......如果 方法返回一个布尔值,使用is或has作为前缀 方法名称。