为什么要开发jenkins插件:
Jenkins是持续集成运行、管理平台(与hudson一样,具体说明可以查看jenkins的wiki)。jenkins本身提供了一套插件的管理机制,这些插件允许可插拨形式存在。jenkins插件虽然能提供很多种插件,但还是不能满足我们持续集成的需要,所以需要定制一些插件来支撑整个持续集成平台的运行。
Jenkins运行周期:
Jenkins有自己运行的生命周期,如下:
- checkout -check out出源码
- Pre-build - 预编译
- Build wrapper-准备构建的环境,设置环境变量等
- Builder runs -执行构建,比如调用calling Ant, Make 等等
- Recording - 记录输出,如测试结果
- Notification - 通知成员
Jenkins提供的扩展点:
为了支撑插件能在各个生命周期中运行,jenkins提供了各种扩展点,我们主类必须要extends一个扩展点;针对现状,基本上只需要使用Notifier,与builder这两个扩展点;详细如下:
Ø Builder:这个扩展点支撑的是构建这个阶段需要做的事情,包括prebuild postbuid、构建环境等步骤,例如我们更换slave机器的hosts插件
Ø Notifier:包括通知、消息通知等情况,我们的sendnapolimessage是基于这种扩展点来开发的
具体扩展点说明请参考:https://wiki.jenkins-ci.org/display/JENKINS/Extension+points
插件开发步骤
l 设置settings.xml(包括代理)
因为插件使用的是maven的管理形式,所以需要settings文件,了解maven的同学应该知道settings文件的作用,这里不多说。需要在我们的settings.xml中添加如下设置:
<settings>
<pluginGroups>
<pluginGroup>org.jenkins-ci.tools</pluginGroup>
</pluginGroups>
<profiles>
<!-- Give access to Jenkins plugins-->
<profile>
<id>jenkins</id>
<activation>
<activeByDefault>true</activeByDefault> <!-- change thisto false, if you don't like to have it on per default -->
</activation>
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<mirrors>
<mirror>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
<mirrorOf>m.g.o-public</mirrorOf>
</mirror>
</mirrors>
</settings>
由于下载比较慢,所以我添加了一个proxy,具体设置如下:
<!--使用代理-->
<proxy>
<!-- 唯一标识 -->
<id>my-proxy</id>
<!-- 指这个代理是否被激活,比如上面提到有多个代理,则会寻找第一个被激活的代理 -->
&l