HelloWorld插件开发-扩展点概念
前面几篇讲了一下如何建立一个简单的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执行一系列具体动作。