前面几篇讲了一下如何建立一个简单的Hudson插件工程,并介绍了Stapler的基本概念。现在介绍如何在HelloWorld Plugin的基础上开发我们需要的插件。
Hudson插件的开发是基于扩展点的,Hudson为用户提供了大量的扩展点(http://wiki.hudson-ci.org/display/HUDSON/Extension+points),
现在简单介绍几个比较常用的:

扩展点说明

Builder 实际执行的Build步骤
Cloud 创建节点,用来动态扩展Hudson的附属机器
Job 一个Job是Hudson下的一个可执行的实体
Notifier Build完成后的提醒
SCM 源代码管理
Trigger 触发一次Build
Publisher 产生报告

以现在有的Alireport与旺旺提醒插件为例,分别是扩展了Publisher与Notifier两个扩展点。当继承了这些扩展点后,Hudson会根据@Extension 扫描插件,自动加载所扩展的部分,当然也可以继承hudson.Plugin来手动加载所实现的插件。
现在要开发所要的插件,首先要选择合适的扩展点,选择扩展点的时候可以参考已有的大量Hudson插件。如Alireport参考了Tasks,同样选择了Publisher作为扩展点。

在继承的Publisher中有一个函数比较重要,public boolean perform(final AbstractBuild build, final Launcher launcher, final BuildListener listener)这个函数是在每次Build过程中执行的,可以写这个插件在Build过程中要做的事。
选择好扩展点后我们来为这个扩展点写Descriptor,也就是扩展点的描述。

Hudson加载的时候是直接加载ReportPublisher.REPORT_DESCRIPTOR的,在ReportDescriptor的构造函数中会把ReportPublisher的信息包含进来。

[code lang="java"]
ReportDescriptor() {
super(ReportPublisher.class);
}
[/code]

在Build过程中,Hudson会实例化出一个ReportPublisher的对象,并调用其中的perform执行一系列具体动作。

标签: none

添加新评论