Jenkins强大的功能主要靠其丰富的plugin体现,之前的一篇博客《Jenkins安装plugin》中介绍了如何找到并安装需要的plugin。虽然目前已经有大量非常优秀的plugin可供使用,但是有时候仍需要自己开发一些满足项目特殊要求的plugin。下面通过一个简单实例,介绍Jenkins的plugin的整个开发过程。

1. 环境准备

1) 安装工具: Maven 3; JDK 6.0或以上版本,Eclipse SDK 4.2

2) 环境变量:PATH中添加mvn.bat路径;JAVA_HOME中添加SDK路径

3) 修改maven安装目录下conf文件夹中的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 this to 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>

2. 创建plugin

在命令行窗口中执行命令:mvn hpi:create,创建plugin项目的目录结构和POM文件。会提示输入groupId(相当于Java代码的package name)和artifactId(相当于Java代码的project name),如下图所示:

上面红色方框中就是提示输入groupId和artifactId的地方,下面红色方框的"BUILD SUCCESS”表示plugin项目创建成功。

3. 编译plugin

编译plugin项目,有两种方式,一种是用Maven命令方式,另一种是将plugin项目导入到Eclipse的方式。前者只需要执行一条Maven命令,如果不必编辑plugin项目的代码,这种方式非常方便。后者需要额外准备Eclipse开发环境,并需要Maven的Eclipse plugin将Eclipse和Maven关联起来,但是这种方式适合于对Eclipse比较熟的开发者。

3.1 Maven命令方式

在命令行窗口中plugin项目的目录下执行mvn package命令,会编译plugin项目,同时创建jar包和hpi文件。

3.2 导入到IDE方式

打开Eclipse,选择“File”->“import”->“Maven”->“Existing Maven Projects”,选择上步中Maven创建的文件夹myplugin,点击“ok”,如下图所示:

Eclipse会分析pom.xml文件并生成Java项目文件,忽略import过程中的warnings。Maven项目导入Eclipse之后的目录结构如下图所示:

在Maven build项目之前,必须先对项目Maven clean,这样才能保证自己开发的plugin在部署到Jenkins之后能够看得到,目前还不清楚为什么需要有这么一步。执行Maven clean和Maven build的方式是右击plugin项目,选择Run As -> Maven clean或者Maven build,如下图所示:

4. 测试Plugin

在命令行窗口中plugin项目的目录下执行mvn hpi:run,Maven会在Jetty中启动一个测试Jenkins,并将新开发的plugin部署到Jenkins中,在浏览器地址栏中输入http://localhost:8080/jenkins即可进入测试Jenkins。前面创建的plugin项目,只是输出你的名字,其他什么事情也没做,下面对其进行测试。

创建测试job:


在build step中选择"Say hello world"项(新开发plugin提供):

输入你的名字:

测试结果:

Reference

Plugin tutorial

Jenkins插件开发入门资料收集

Jenkins的plugin开发的更多相关文章

  1. 使用 Jenkins 实现软件开发的持续集成

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-jenkinsintegrate/ Jenkins 是一种易于使用的持续集成系统,它可以使开发者从繁 ...

  2. [Cordova] Plugin开发架构

    [Cordova] Plugin开发架构 问题情景 开发Cordova Plugin的时候,侦错Native Code是一件让人困扰的事情,因为Cordova所提供的错误讯息并没有那么的完整.常常需要 ...

  3. [Cordova] Plugin开发入门

    [Cordova] Plugin开发入门 Overview Cordova的设计概念,是在APP上透过Web控件来呈现Web页面,让Web开发人员可以操作熟悉的语言.工具来开发APP.使用Web页面来 ...

  4. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(三)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2340661.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  5. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(四)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/08/2343294.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  6. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/02/2336147.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  7. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(二)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2339490.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  8. Flutter Plugin开发流程

    这篇文章主要介绍了Flutter Plugin开发流程,包括如何利用Android Studio开发以及发布等. 本文主要给大家介绍如何开发Flutter Plugin中Android的部分.有关Fl ...

  9. Xamarin+Prism开发详解七:Plugin开发与打包测试

    有了上章[Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系]的基础,现在来理解Plugin开发就简单了. 本文实例代码地址:ht ...

随机推荐

  1. jQuery开发技术笔记

    HTML DOM 加载步骤    1. 解析 HTML 结构     2.加载外部脚本和样式表文件     3.解析并执行脚本代码     4.构造 HTML DOM 模型     5.加载图片等外部 ...

  2. "System.Web" 中不存在类型或命名空间

    System.Web”中不存在类型或命名空间名称script  /找不到System.Web.Extensions.dll引用 添加引用就行了...“添加引用→.Net→System.Web.Ente ...

  3. 解决delphi使用sqlite时中文最后一个字是乱码的问题

    给部门同事写了个自动生成测试用例执行情况图表的工具,使用的sqlite3,遇到中文分别使用UTF8Encode和UTF8Decode进行处理,可还是出现了某些字段从数据库中读出时,最后一个汉字是乱码的 ...

  4. Quartz1.8.5例子(二)

    /* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the ...

  5. 领域驱动设计(Domain Driven Design)参考架构详解

    摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

  6. (转载)Convolutional Neural Networks卷积神经网络

    Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional N ...

  7. struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

    <interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...

  8. [BZOJ 1218] [HNOI2003] 激光炸弹 【n logn 做法 - 扫描线 + 线段树】

    题目链接:BZOJ - 1218 题目分析 可以覆盖一个边长为 R 的正方形,但是不能包括边界,所以等价于一个边长为 R - 1 的正方形. 坐标范围 <= 5000 ,直接 n^2 的二维前缀 ...

  9. PHP 如何安全的使用 MySQL ?

    大多数 PHP 程序员对 MySQL 肯定不陌生,至于各种 MySQL 函数的用法在开发手册和 w3school 这类网站上也有很多介绍.但是,你所用的写法真的安全吗?面对越来越猖獗的黑客攻击,SQL ...

  10. Warm up 2

    hdu4619:http://acm.hdu.edu.cn/showproblem.php?pid=4619 题意:题目大意:给你两种纸牌 ,一种水平放置共有n张 ,一种竖直放置共有m张.水平放置的纸 ...