本篇我们来讨论下关于jenkins社区中钉钉提醒这个插件的二次开发过程。为什么需要二次开发呢,很简单,这个插件只是提供了最基本的构建后的提醒,有时候,我们需要一些额外的功能。例如,我们在打完app的包后,利用这个插件是可以发送提醒,但是点击标题,这个插件默认跳转的是jenkins上当前构建号的页面。我的实际工作中,有一个需求,用户在钉钉群,点击这个成功打包提醒,希望跳转到一个下载包的页面。点击失败提醒,和改插件的原功能一样,直接跳转到当前构建失败的这个构建号页面。
本文介绍的钉钉提醒插件的github的地址是:https://github.com/jenkinsci/dingding-notifications-plugin
可以先看看作者的写的效果图介绍,大概了解下提醒的效果。但是文章没有介绍点击可以跳转到构建号的页面。如果可以,先安装jenkins环境,然后到插件管理下载这个钉钉提醒插件,自己试试提醒效果。
需求:用户点击打包成功提醒,跳转到下载路径,点击失败打包提醒,跳转到当前构建号页面。
需求分析:
原作者实现了打包成功或者失败,点击标题都跳转到当前构建号的页面。这个功能是通用的,例如网站项目代码构建就没有下载功能。但是我们现在做的是APP自动化构建,肯定要给用户提供下载功能。思考一下,也就是说,我们在这个插件的界面,添加一个下载链接的输入控件,打包成功发送提醒这个方法,修改原来的链接,替换成用户输入的下载链接,这样打包成功提醒,点击就可以调整到下载包的web界面。
不要有在代码写死打包下载路径的想法,这个想法是愚蠢的。因为换了一个环境,打包下载的路径可能就要换。属于,这个下载路径我们需要在前端设计一个文本输入框,让用户填写,代码里获取这个就可以。我们只动打包成功发送提醒消息这个代码,失败的代码不用动。
这是一个很小的需求变动,我们可以通过这种二次开发过程,窥探下jenkins的插件开发过程。成功了,也好给自己一个满足感,会了这个基本,接下来,我们还可以针对提醒消息内容进行优化,再次开发新的功能。
具体二次开发过程
1. 前提条件
做这个二次开发是需要一些前提条件的:
1)Java代码阅读能力
2)钉钉聊天软件,提前设置好机器人
3)IDEA Java IDE开发工具
4)本地安装好Maven环境
5)Jenkins安装好,插件需要安装到Jenkins上进行测试
2. Github下载源码
下载源码,一般有两个方法,git命令下载或者直接下载项目zip包。由于我博客文章中介绍了git的基本命令,所以,这里我选择git clone源码到本地。
1)打开git bash窗口
如果没有安装git,请到博客对应文章去查找方法,或者百度,或者下载zip包的源码,忽略本步骤。
在桌面,右键点击git bash here
2)输入如下命令
首先,我们获取这个github项目的地址,如下图红框,如果不会git,选择Download ZIP这个按钮下载源码到本地。
在git bash输入如下命令
由于我是在桌面打开git bash的,所以下载的项目的文件夹会在桌面生成,文件夹名称叫dingding-notifications-plugin,根据上图来看,源码是成功下载到本地。
3) 检查源码是否成功下载
打开桌面源码文件夹,点击展开src,和该项目github地址对比下,网络没有问题,git命令肯定帮你成功下载源码到本地。
3. 编辑器打开下载源码
源码下载好了,我们需要用IDEA打开。打开IntelliJ IDEA之后,点击File-New-Moudle from existing source,选择刚才桌面的dingding文件夹,效果如下。
一般来说,我们都要右键pom.xml-Maven-DownloadSources,这样打开里面的java文件就不会报各种错误,特别是哪些导入包语句。或者点击右键reimport菜单。
展开源码,得到如下结构图。
主要就是编辑config.jelly添加前端一个文本输入框,用来接收用户的包下载地址。在上面三个方法和一个借口,插入对应获取下载包地址的方法,并且修改成功状态下打包的json字符串中的url换成打包下载路径的URL。
4. 二次开发过程
为了区别开发前后效果,我先在Jenkins上安装一个在线下载的插件。就是在插件管理,搜索dingding,然后点击下载安装。
新建一个job, 构建选择bat命令
因为我们仅仅测试钉钉提醒插件,随便写一个dos命令来作为构建配置。构建后选择钉钉提醒插件。
我就是在jenkins URL 和钉钉access token之间插入一个输入框,用来获取打包下载路径。这个功能就是本篇的介绍的所谓的二次开发。真正的开发就下面开始的过程。
1)添加一个下载包路径
这个最简单,我们先来实现简单的。所有的前端页面的空间布局都写在config.jetty这个文件中。
这个代码和前面构建后效果图对比,你就很快明白了。所以,我们插入一个下载包路径的文本输入框应该是这样写。
红框就是我添加的控件部分的代码。直接复制,然后修改下就可以。这个文件如果没有出错,我们暂时不动它,只有到最后测试的时候才知道是什么效果。
2)构造一个获取用户输入buildURL的方法
在上面的jetty配置文件中,我们可以参考accessToken这个field是如何写获取用户输入的token的方法。
我们可以在DingdingNotifier.java找到accessToken是定义的一个类属性。所以,我们这里也定义一个buildURL的类属性并且添加get方法
如果你在打开代码问题,出现导入包语句错误,你可以手动点击错误地方,选择添加到library,有些包确实不会自动帮你导入到项目的library。
3)修改下构造方法,buildURL添加进入构造方法
4)打开DingdingServiceImpl.java,修改构建成功提醒的方法
![](https://img-blog.csdn.net/20171125223433538?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTU0MTk0Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5)修改构建成功方法的提醒
因为我们要构建成功,点击跳转到下载页面。
6) 返回到DingdingNotifier.java文件,修改如下![]()
因为我们修改了DingdingServiceImpl的构造函数,所以这个地方也需要添加buildURL这个参数。保存代码,下面开始打包测试。
5. 打包进行测试
打包测试,我们在jenkins上是需要得到一个.hpi的文件,下面就教你如何打包。
1)打开cmd,进入到桌面dingding-notifications-plugin这个文件夹
2)使用mvn package打包
3)打包成功
4)查看打包
根据上面的路径,拷贝出.hpi文件到桌面,下一步,我们要上传到jenkins来进行测试
5)上传安装测试
由于我前面在线安装了钉钉提醒这个插件,所以我这里先要卸载,然后插件管理选择高级,然后上传。
点击上传按钮,开始安装。可能需要重启jenkins服务。
6)构建后钉钉提醒插件效果
看到这里,我们成功添加了一个APP包下载地址的输入框。构建测试需要钉钉群,添加机器人,具体就不介绍了。
我在APP包下载地址输入框输入https://www.baidu.com,实际项目,可以设置你们tomcat配置好的docbase的地址。然后输入钉钉群设置的机器人的token。
7)实际构建测试
我这边测试了下,点击红框位置,会跳转到百度首页,这个就证明了,我实现了这个需求。
以上就是关于钉钉提醒这个插件的二次开发的完整过程,主要是这个开源项目代码很少,容易读懂,而且我们添加的新的需求也很简单,比较容易实现。通过这个实战,让我们基本了解一个jenkins插件的开发流程中的部分知识,至少知道mavn项目的如何打包,而且还对我们实际工作的项目有帮助,这个就稍微有点成就感。