Jenkins实战-钉钉构建提醒插件的二次开发

  本篇我们来讨论下关于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上进行测试
  6. Github下载源码

下载源码,一般有两个方法,git命令下载或者直接下载项目zip包。由于我博客文章中介绍了git的基本命令,所以,这里我选择git clone源码到本地。

  1. 打开git bash窗口

如果没有安装git,请到博客对应文章去查找方法,或者百度,或者下载zip包的源码,忽略本步骤。

在桌面,右键点击git bash here

  1. 输入如下命令

首先,我们获取这个github项目的地址,如下图红框,如果不会git,选择Download ZIP这个按钮下载源码到本地。

在git bash输入如下命令

由于我是在桌面打开git bash的,所以下载的项目的文件夹会在桌面生成,文件夹名称叫dingding-notifications-plugin,根据上图来看,源码是成功下载到本地。

  1. 检查源码是否成功下载

打开桌面源码文件夹,点击展开src,和该项目github地址对比下,网络没有问题,git命令肯定帮你成功下载源码到本地。

  1. 编辑器打开下载源码

源码下载好了,我们需要用IDEA打开。打开IntelliJ IDEA之后,点击File-New-Moudle from existing source,选择刚才桌面的dingding文件夹,效果如下。

一般来说,我们都要右键pom.xml-Maven-Download Sources,这样打开里面的java文件就不会报各种错误,特别是哪些导入包语句。或者点击右键reimport菜单。

展开源码,得到如下结构图。

主要就是编辑config.jelly添加前端一个文本输入框,用来接收用户的包下载地址。在上面三个方法和一个借口,插入对应获取下载包地址的方法,并且修改成功状态下打包的json字符串中的url换成打包下载路径的URL。

  1. 二次开发过程

为了区别开发前后效果,我先在Jenkins上安装一个在线下载的插件。就是在插件管理,搜索dingding,然后点击下载安装。

新建一个job, 构建选择bat命令

因为我们仅仅测试钉钉提醒插件,随便写一个dos命令来作为构建配置。构建后选择钉钉提醒插件。

我就是在jenkins URL 和钉钉access token之间插入一个输入框,用来获取打包下载路径。这个功能就是本篇的介绍的所谓的二次开发。真正的开发就下面开始的过程。

  1. 添加一个下载包路径

这个最简单,我们先来实现简单的。所有的前端页面的空间布局都写在config.jetty这个文件中。

这个代码和前面构建后效果图对比,你就很快明白了。所以,我们插入一个下载包路径的文本输入框应该是这样写。

红框就是我添加的控件部分的代码。直接复制,然后修改下就可以。这个文件如果没有出错,我们暂时不动它,只有到最后测试的时候才知道是什么效果。

  1. 构造一个获取用户输入buildURL的方法

在上面的jetty配置文件中,我们可以参考accessToken这个field是如何写获取用户输入的token的方法。

我们可以在DingdingNotifier.java找到accessToken是定义的一个类属性。所以,我们这里也定义一个buildURL的类属性并且添加get方法

如果你在打开代码问题,出现导入包语句错误,你可以手动点击错误地方,选择添加到library,有些包确实不会自动帮你导入到项目的library。

  1. 修改下构造方法,buildURL添加进入构造方法

  1. 打开DingdingServiceImpl.java,修改构建成功提醒的方法

  1. 修改构建成功方法的提醒

因为我们要构建成功,点击跳转到下载页面。

  1. 返回到DingdingNotifier.java文件,修改如下

因为我们修改了DingdingServiceImpl的构造函数,所以这个地方也需要添加buildURL这个参数。

  1. 打包进行测试

打包测试,我们在jenkins上是需要得到一个.hpi的文件,下面就教你如何打包。

  1. 打开cmd,进入到桌面dingding-notifications-plugin这个文件夹

  1. 使用mvn package打包

  1. 打包成功

  1. 查看打包

根据上面的路径,拷贝出.hpi文件到桌面,下一步,我们要上传到jenkins来进行测试

5)上传安装测试

由于我前面在线安装了钉钉提醒这个插件,所以我这里先要卸载,然后插件管理选择高级,然后上传。

点击上传按钮,开始安装。可能需要重启jenkins服务。

  1. 构建后钉钉提醒插件效果

看到这里,我们成功添加了一个APP包下载地址的输入框。构建测试需要钉钉群,添加机器人,具体就不介绍了。

我在APP包下载地址输入框输入 https://www.baidu.com,实际项目,可以设置你们tomcat配置好的docbase的地址。然后输入钉钉群设置的机器人的token。

  1. 实际构建测试

我这边测试了下,点击红框位置,会跳转到百度首页,这个就证明了,我实现了这个需求。

 

  以上就是关于钉钉提醒这个插件的二次开发的完整过程,主要是这个开源项目代码很少,容易读懂,而且我们添加的新的需求也很简单,比较容易实现。通过这个实战,让我们基本了解一个jenkins插件的开发流程中的部分知识,至少知道mavn项目的如何打包,而且还对我们实际工作的项目有帮助,这个就稍微有点成就感。我接下来,还好针对这个提醒消息,添加新的需求,主要是,显示每次打包的环境信息,就是告诉别人,当前这个包是测试环境包还是准生产报,还是线上包,这个就不再写文章,你也可以动手试试。(参数化构建,用户选择的参数,自动填充到钉钉提醒界面输入打包环境的文本框)

posted @ 2023-05-23 09:18  卷毛七号  阅读(310)  评论(0编辑  收藏  举报