`
intl-bcds
  • 浏览: 79913 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hudson plugins 插件开发基础

阅读更多

 

by Justin

 

1.     关于Hudson 插件的开发环境的搭建

Hudson 官方的说法是插件的开发必须依赖Maven2JDK6.0 或者更高版本。关于Maven 相关不会在这里详细说明。

ok ,首先方便起见,我们需要配置下我们的Maven ,设置以下内容到你的settings.xml 文件(在你的.m2 文件夹)当中去。




 
 

尝试在你的workspace 里创建一个新的插件工程(如果你没有做上面那个步骤,你需要输入的可不是hpicreate 那么简单……):



 

继续我们的创建工作,按照提示输入必要的一些项目配置信息:



 

现在你会发现你当前的workspace 里面已经生成了插件的基本框架,当然只包含一个maven 的项目配置信息文件pom.xmlsrc 代码文件夹。接下来要做的事情是把你的Maven 工程导入到你的IDE 里面去,eclipse 已经提供了完善的Maven 插件,所以你可以直接导入Maven 项目,当然如果没有安装Maven 插件,那也没有关系,到你的pom.xml 层去尝试执行mvn eclipse:eclipse 吧,Maven 当然支持生成eclipse 的项目架构。

 

需要注意的点Ahudson 官方提及了建议使用eclipse 3.3 及以后的版本,似乎是已知的3.2 版本存在未解决的bug 导致的。

需要注意的点B :在导入eclipse 项目或者第一次打包项目的时候,会花费一段时间来下载Maven 配置的依赖项。

 

在这一节里还需要留意的是几个相关的命令:

mvn package  -- 完成代码开发之后执行,按照pom.xml 中的配置信息将会打包为hpi 格式的插件文件,这个就是你最终可以拿来上传给你的hudson 平台的玩意

mvn hpi:run   -- 在本地的Jetty 中运行你的hudson 插件,调试专用,当然可以使用Debug 模式,执行之后,在本地访问 http://localhost:8080/ 即可见(注意不要占用8080 端口)



 

 

2.     关于hudson 插件的结构

主要的结构包含四块内容:

pom.xml                      --Maven 项目配置信息,包括了项目结构,依赖和命名等

src/main/java            --Java 代码

src/main/resources    -- hudson 平台上的页面显示内容,使用的Jelly ,标签有点诡异

src/main/webapp      -- 需要的一些静态资源包括图标图片页面等等等

完整的hudson 项目导入之后在eclipse 中的目录结构:



 

其中的HelloWorldBuilder.java 就是Maven 帮助我们生成的一份示例插件类,通过对这个文件的分析我们可以了解到一些插件类的工作方式。Hudson 通过判断你要实现的插件类的扩展方式来决定你的插件的工作方式,是在build 任务之前去做准备数据的工作,还是在build 过程中进行相应的配置,或者在每次运行完成后负责收集数据,不同的扩展方式在hudson 的工作中的切入点不一样,官方提供了相当丰富的扩展点,具体可以参考 http://wiki.hudson-ci.org/display/HUDSON/Extension+points ,这里的HelloWorldBuilder 扩展自Builder

关于扩展点的实现,不同的扩展点提供了对应的方法,比如Builder 扩展点提供了perform 方法,而WrapperBuilder 则是提供了setUp 方法。

关于数据绑定的方法,通过在构造方法前加标签@DataBoundConstructor ,将hudson 插件配置页面的数据传递进来。

关于页面的交互,通过内部静态类DescriptorImpl 来实现页面的显示和数据验证的工作

 

resources 中提供了一个以完整的包名加类名命名的资源包,其中包含的config.jellyglobal.jelly 文件需要注意下。Hudson 使用jelly 来拼装页面,关于jelly 的相关资料找了一圈,信息量很少,hudson 官方提供一些资料 http://wiki.hudson-ci.org/display/HUDSON/Basic+guide+to+Jelly+usage+in+Hudson

config.jelly 是配置的当插件被选中时提供给用户交互的页面内容,注意页面的表单需要与你的处理类中的参数相对应同名。

如果你愿意提供下帮助的信息,ok ,在这儿直接写个命名为help-*.html 就行。

其实resources 路径下面还有一个index.jelly ,配置的是插件在hudson 的插件列表中的说明信息。插件名则可以命名在你的pom.xml 中,标签就是name

 

3.     关于hudson 插件开发的相关资料

官方wiki http://wiki.hudson-ci.org/

 

  • 大小: 10.2 KB
  • 大小: 2.7 KB
  • 大小: 15.1 KB
  • 大小: 35.3 KB
  • 大小: 34.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics