Jenkins界面Jelly入门

本文详细介绍了如何使用Jelly页面配置与Jenkins插件集成的方法,包括Jelly页面的路径、预定义对象的使用、修改文件的步骤以及Jelly控件的使用方法等。此外,还详细阐述了如何在页面上显示配置选项、增加帮助文档、进行配置信息检查以及配置信息的检查方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.csdn.net/kittyboy0001/article/details/18710161



有改动


一,Jelly的基本用法

1.1 Jelly页面的路径

假设你建立了一个java类,路径为

src/main/java/org/myOrg/MyAction.java

则增加Jelly文件需要在resources文件夹中建立与类同名的目录:

src/main/resources/org/myOrg/MyAction/

并且在其中增加文件config.jelly,路径如下:

src/main/resources/org/myOrg/MyAction/config.jelly

如果你的插件中需要包含帮助文档,文档的名称为help-FIELD.html或者help-FIELD.jelly,路径同config.jelly,这时在控件的右边会显示一个问号:

src/main/resources/org/myOrg/MyAction/help-FIELD.html

1.2 Jelly页面中预定义的对象

1.2.1 it对象

Jelly文件直接绑定到了对应的类上,即Jelly页面可以调用类中的函数。为了引用Jelly页面绑定的类,Jelly文件使用it对象。

类中的函数:
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!"

1.2.2 其他对象

1.app : Jenkins 实例对象
2.instance : 当前被配置的对象
3.descriptor : 对应于instance类的Descriptor对象
4.h :  hudson.Functions 的实例对象,有众多实用方法

页面上可以使用下列变量来产生链接:

1.rootURL : Jenkins实例对象

2.resURL:静态webapp资源,如JS或者HTML(比照,Jenkins.RESOURCE_PATH)

3.imagesURL :如同resURL但是后面增加/images

1.2.3 修改 *.jelly 文件

修改jelly文件不用重启jenkins服务器


二,Jelly的使用方法


2.1 包含 Descriptor 的对象

Descriptor 是一个对象,其包含了关于Describable 对象的元数据信息,作为一个工厂。

对于对象中包含Descriptor的对象,页面和数据的绑定步骤如下:
1.在类中增加一个构造函数,将所有需要的配置作为构造函数的参数。并且在构造函数上增加@DataBoundConstructor注解,来告诉Jenkins进行实例化。

public class MyRecorder extends Recorder {
    private final String url;
    private final String info;

    // Fields in config.jelly must names in "DataBoundConstructor"
    @DataBoundConstructor
    public HelloWorldBuilder(String url,String info) {
        this.url = url;
        this.info = info;
    }
}

2.在类中增加getter方法,或者将变量设置为public final。这样可以让Jelly脚本将数值显示到配置信息页面。

//We'll use this from the <tt>config.jelly</tt>.
public String getUrl() {
    return url;
}
public String getInfo() {
    return info;
}

3.在config.jelly中增加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:entry title="请求地址" field="url">
        <f:textbox />
   </f:entry>
   <f:entry title="项目所需变量" field="info">
        <f:textbox />
  </f:entry>
</j:jelly>

4.帮助文件
对控件需要增加帮助信息,可以在文件中包含名称为help-FIELD.html或者help-FIELD.jelly的帮助文档。你也可以增加顶级的帮助文档help.html。增加了帮助文档,会在控件的右边显示一个问号,点击能够显示提示信息。

  <f:section title="My Plugin">
    <f:entry title="${%Port}" help="help-port.html">
      <f:textbox name="port" value="${it.port}"/>
    </f:entry>
  </f:section>   

5.配置信息检查
在内部实现的DescriptorImpl类中,增加doCheckFIELD()函数,来进行配置信息的检查。在参数上可以增加@QueryParameter注解来传入附近位置的数据。

public FormValidation doCheckUrl(@QueryParameter("url") String value)
            throws IOException, ServletException {
        if (value.length() == 0)
            return FormValidation.error("Please set the url");

        return FormValidation.ok();
    }

6.Jelly页面的默认值 如果希望配置页面上增加初始化值,可以使用@default注解:

<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
  <f:entry title="${%Port}" field="port">
    <f:textbox default="80" />
  </f:entry>
  <f:entry title="${%Host}" field="host">
    <f:textbox default="${descriptor.defaultHost()}/>
  </f:entry>
</j:jelly>

第一个default使用了固定值,第二个default使用了计算出来的数值作为初始化参数。

2.2 Jelly控件

2.2.1 textbox和checkbox

Jelly程序如下:

  <f:entry title="Create test report" field="isSelected">
       <f:checkbox/>
   </f:entry> 


  <f:entry title="Name" field="name">
      <f:textbox />
  </f:entry>

对应的Java程序:

    private final String name;  
    public boolean selected;

    @DataBoundConstructor
    public HelloWorldBuilder(String name,boolean selected) {
        this.name = name;
        this.selected = selected;
    }

    public boolean isSelected() {
        return selected;
    }

    public String getName() {
        return name;
    }
2.2.2 validateButton控件

当我们需要在服务器端进行数据验证,并且输入的数据需要多个参数支持时使用。例如输入用户名和密码:

<f:entry title="${%Access Key ID}" help="...">
  <f:textbox field="accessId" />
</f:entry>
<f:entry title="${%Secret Access Key}" help="...">
  <f:password field="secretKey" />
</f:entry>
<f:validateButton
   title="${%Test Connection}" progress="${%Testing...}"
   method="testConnection" with="secretKey,accessId" />

在服务器端,validateButton触发的事件默认为doTestConnection,并且传入了靠近validateButton的参数accessId和secretKey,最后这个函数需要调用FormValidation.okwarning,或者 error

public FormValidation doTestConnection(@QueryParameter("accessId") final String accessId,
        @QueryParameter("secretKey") final String secretKey) throws IOException, ServletException {
    try {
        ... do some tests ...
        return FormValidation.ok("Success");
    } catch (EC2Exception e) {
        return FormValidation.error("Client error : "+e.getMessage());
    }
}
2.2.3 Advance控件
<f:advanced>
    <f:entry title="${%Ignore Property Changes on directories}" field="advance">
        <f:checkbox />
    </f:entry>
</f:advanced>

对应的程序

 @Exported
 public boolean getAdvance(){
    return advance;
 }
2.3.4 Optional控件

可选块:

<table>
    <f:optionalBlock field="dynamic" title="Use existing dynamic view" checked="${instance.getChecked()}">
       <f:entry title="View name">
        <f:textbox field="name" value="${it.checked}"/>
      </f:entry>

    </f:optionalBlock>
  </table>

说明:这些模块的使用,可以参见:

  • 1.https://github.com/jenkinsci/jenkins/trunk/ui-samples-plugin
  • 2.https://wiki.jenkins-ci.org/display/JENKINS/Jelly+form+controls
### Jenkins 插件列表及使用说明 #### Git 插件 Git 插件允许 Jenkins 与 Git 版本控制系统集成,从而实现自动化构建流程。此插件支持基本的克隆操作以及更复杂的分支管理和标签处理功能[^1]。 对于希望利用 GitHub 或其他基于 Git 的托管服务来触发持续集成工作的团队来说非常有用。它还提供了详细的文档介绍如何设置仓库路径、认证方式等内容。 #### 性能测试插件 (Performance Plugin) 该插件旨在帮助开发者运行并报告性能测试的结果。其特性涵盖了多种流行的负载生成工具如 JMeter 和 Gatling,并能够解析它们产生的日志文件以图形化展示关键指标变化趋势图等信息[^2]。 项目主页上列出了完整的安装指南和技术细节描述,方便用户快速入门并有效监控应用程序的表现情况。 #### Docker 集成配置 为了使 Jenkins 能够顺利执行涉及容器化的任务,在某些情况下可能需要调整宿主机上的权限分配策略。具体而言就是将 jenkins 用户加入到 docker 组当中以便获得必要的访问权利去操控本地Docker守护进程[^3]: ```bash gpasswd -a jenkins docker ``` 这一步骤简化了后续工作中关于镜像拉取推送等方面的复杂度,同时也提高了安全性管理效率。 #### Kubernetes 插件 当面对大规模分布式环境下的CI/CD需求时,Kubernetes 成为了一种理想的选择方案之一;而对应的官方插件则进一步增强了平台之间的协作能力,使得资源调度更加灵活高效[^4]. 源码结构清晰明了地展示了各个组件的作用范围及其相互关系: - `config.jelly`: 定义了UI界面上可供修改的各项参数选项. - `messages.properties`: 提供多语言支持的基础素材库. 上述四个部分共同构成了一个较为全面且易于理解的学习资料集锦,无论是初学者还是有一定经验的技术人员都能从中受益匪浅.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值