Jenkins插件开发手册(3)

2019-08-17 12:09

Calendar startedTime = build.getTimestamp();

SimpleDateFormat simpleDateFormat = new SimpleDateFormat

String started = simpleDateFormat.format (startedTime.getTime()); String durationMillis = build.getDuration(); String log = build.getLog();

String fileName = \ + number + String content;

content = version + \

(\);

\;

{ { }

+ name + \ + started + \

+ durationMillis + \ + log;

try

FileWriter writer = new FileWriter(fileName,true); writer.write(content); writer.close();

}catch(IOException e)

e.printStackTrace();

这段代码是获得编译时的一些信息,然后输出到一个文本文件中。其中AbstractBuild类包含了编译的大部分的信息,可以查看API获得更详细的信息 http://javadoc.jenkins-ci.org/ Hudson.model.AbstractBuild。

此外有一个内部静态类DescriptorImpl,该类通过@Extension声明告诉jenkins,告诉系统该内部类是作为BuildStepDescriptor的扩展出现。有以下几个方法。

isApplicable方法,是否对所有项目类型可用。

其他的方法和配置文件有关,在下面介绍配置文件时在详细说明。

2、视图配置文件

Jenkins使用了Jelly页面渲染技术,这是一个基于XML的服务端页面渲染引擎,其将基于Jelly的xml标签转换为对应的Html标签并输出到客户端。模型对象的信息通过Jexl表达式被传递到页面上(相当于Jsp的JSTL)。jelly文件以.jelly为后缀,在hudson中使用类全名的形式来查找模型类对应的jelly页面文件,如名为src/main/java/com/jysong/jenkins/HelloWorldBuilder.java的类,其对应的页面文件应该存在于src/main/resources/com/jysong/jenkins/HelloWorldBuilder目录的下。

此外hudson通过固定的命名方式来确定页面文件属于局部配置还是全局配置:config.jelly提供局部配置;global.jelly提供全局配置。config.jelly是具体的某个job的配置,global.jelly是指jenkins的系统配置。

视图有三种:1,全局配置(global.jelly)2,Job配置(config.jelly),还有就是使用帮

11

助(help-字段名).html

1、 全局配置详解

global.jelly为全局配置页面。

xmlns:d=\xmlns:f=\

description=\

其中title为标题,表示要显示的内容。field为将调用DescriptorImpl内部类的方法getUseFrench(),field域会将方法去掉get并且将第一个字母小写,找到相对应的方法。description将显示描述信息。f:checkbox为复选框控件。

在每次保存全局配置时,jenkins都会调用该descriptor对象,并调用其configure方法,可以实现该方法并提供自己的定制

在DescriptorImpl中的configure方法中,可以对全局配置进行操作。save方法用于将当前Descriptor所提供的配置持久化(通过get**方法),为了使save能正常工作,需要提供配置项的get方法。

2、 局部配置详解

config.jelly 的内容将被包含在扩展功能的配置中,在HelloWorldBuilder文件夹下面的配

置内容是:

xmlns:d=\xmlns:f=\

其中entry 表示用于交互的html表单域,title将作为表单域label的值,在界面中要显示的内容。 field表示的是HelloWorldBuilder的构造函数中的参数。如果有多个field,就要有多个相对应的参数。textbox 表示简单的渲染一个输入文本,输入的值将赋给name。

将插件部署到jenkins后实际效果如下图:

图13

选择Say hello world,

图14

Say hello world是由于在DescriptorImpl内部类中有方法getDisplayName(),此方法返回的字符串作为pre-build step的名称。 在DescriptorImpl内部类中doCheckName(@QueryParameter String value)方法,在光标不再在输入框时,将执行这个方法,其中输入框的输入值以value值传入,在这个函数里可以进行验证,是否符合输入条件。 允许为表单域增加帮助说明(在页面上对应于文本框后面出现问号按钮,一点击可出现提

示):

在同名目录下有help-{fileName}.html,在该文件中添加帮助内容;帮助内容允许是动态的,即可以从模型中拉取信息进行显示,这需要将html后缀改为jelly,而help-name.html文件的形式大致如下:

Help file for fields are discovered through a file name convention. This file is

help for the \arbitrary HTML here. You can write

this file as a Jelly script if you need a dynamic content (but if you do so, change

the extension to .jelly).

13

在输入框中输入相对目录。

测试案例

在此基础之上,实现一个简单的案例。

1、编写代码

在HelloWorldBuilder类中的perform方法中,添加代码:

FilePath workspace = build.getWorkspace();

String filePath = workspace.toString() + \ + path;

File files = new File(filePath); File[] fileList = files.listFiles();

String strFile = \;

for(int i=0;i

String fileName = \ + number try { { }

e.printStackTrace();

FileWriter writer = new FileWriter(fileName,true); writer.write(strFile); writer.close();

strFile += fileList[i].getName() + \;

+ \;

}catch(IOException e)

以上代码是为了获得job的workspace,然后根据传入的name,获取目录下面的文件名,最后写入到一个文本文件中。 打开cmd,转到工程目录下,执行

mvn package

2、准备编译工作

将jetty服务器启动,使用端口8090

在浏览器中打开http://loaclhost:8090,新建一个job。点击运行。

在工程目录下面有个work文件夹,进入work文件夹,下面有个jobs文件夹。在jobs

文件夹下面存放着所有的job,进入刚新建的job,下面有builds文件夹和workspace文

14

件夹。其中builds文件夹下面存放着每次编译产生的所有的信息文件。workspace文件夹下面存放着要进行编译的工程文件和代码文件。

在workspace目录下使用VS2010新建一个工程,HelloTest。

3、配置jenkins

在jenkins中点击新建的工程,然后点击configure,在Build下Add build step

图15

选择Execute Windows batch command,输入以下

\\HelloTest\\HelloTest.sln\

如下图:

图16

在点击Add build step,选择Say hello work在下面输入: HelloTest\\Debug 如下图:

图17

点击保存。

4、进行编译

点击

进行编译,编译完成之后就会在工程目录下面生成两个文件,一个文件中存放

着编译的信息,一个文件中存放着workspace目录下工程Debug编译生成的文件名。

15

参考资料

https://wiki.jenkins-ci.org/display/JENKINS/Extend+Jenkins http://my.oschina.net/fhck/blog/64639

http://blog.csdn.net/littleatp2008/article/details/7001793

http://javaadventure.blogspot.jp/2008/01/writing-hudson-plug-in-part-1.html https://github.com/jenkinsci/artifactory-plugin

16


Jenkins插件开发手册(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新疆毕业生就业推荐表、就业协议填写说明

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: