这里它们的区别在有点类似于局部变量与全局变量的区别。gloabal.jelly 更多的用于读取存储与某个具体构建无关的配置信息。而具体的构建本身的相关参数基本都由 config.jelly 进行处理。
如果我们需要创建的是一个局部的配置(大多数情况),那么我们就在上述路径下增加文件config.jelly,路径如下:
src/main/resources/org/sample/HelloWorldBuilder/config.jelly 如何读取 Jelly 中的用户输入那么我们有如何访问 Jelly 中的信息呢?最为基础的方法就是通过 Descriptor 进行页面和数据的绑定了。
假设我们在 jelly 按如下方式进行定义:
<f:entry title="Name" field="name">那么与之对应的,我们就可以在对应的类里进行如下配置了:
@DataBoundConstructor public HelloWorldBuilder(String name) { this.name = name; }那么当 UI 中的数据提交之时, Jenkins 会根据传过来的具体数据调用构造函数来创建对象。
在类中增加getter方法,或者将变量设置为public final。这样可以还让Jelly脚本将数值显示到配置信息页面。
public String getName() { return name; }在内部实现的DescriptorImpl类中,我们也可以选择增加doCheckFIELD()函数,来进行配置检查。在参数上可以增加@QueryParameter注解来传入附近位置的数据。
public FormValidation doCheckName(@QueryParameter String value) throws IOException, ServletException { if (value.length() == 0) { return FormValidation.error("Please set a name"); } if (value.length() < 4) { return FormValidation.warning("Isn't the name too short?"); } return FormValidation.ok(); }当然,我们也可以使用各种 Jelly 控件,如textbox,checkbox 以及 validateButton等等。具体的使用方法,可以参考以下文档,这里就不一一展开了。
参考文档:jenkinsci/ui-samples-plugin
如何操控 Jelly 反馈信息首先,我们先来看看 Jelly 如何访问项目中的其它资源。默认情况下, Jenkins 已经定义了以下对象:
app - Jenkins
it - Jelly UI 绑定的类
instance - Jelly UI 所对应的正在被配置的对象
descriptor -与 instance 所对应的 Descriptor
h - husdon.Functions 的实例
所以我们如果在类中配置了:
public String getMyString() { return "Hello Jenkins!"; }而按如下方法编写其对应的 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"> ${it.myString} </j:jelly>那么,页面上就能调用出类的方法,显示出”Hello Jenkins!”了。
局域网内利用GitLab+Jenkins自动生成GitBook并发布(Nginx)
Linux+Git+Maven+Jenkins+Neuxs自动化编译环境搭建
在CentOS 7上安装Jenkins