首页 > 其他分享 >Jenkins实战-钉钉构建提醒插件的二次开发

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

时间:2023-05-23 09:35:55浏览次数:40  
标签:提醒 插件 点击 构建 下载 二次开发 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项目的如何打包,而且还对我们实际工作的项目有帮助,这个就稍微有点成就感。我接下来,还好针对这个提醒消息,添加新的需求,主要是,显示每次打包的环境信息,就是告诉别人,当前这个包是测试环境包还是准生产报,还是线上包,这个就不再写文章,你也可以动手试试。(参数化构建,用户选择的参数,自动填充到钉钉提醒界面输入打包环境的文本框)

标签:提醒,插件,点击,构建,下载,二次开发,Jenkins,打包
From: https://www.cnblogs.com/yking/p/17309070.html

相关文章

  • webpack-安装和配置webpack-dev-server这个插件
    webpack插件的作用通过安装和配置第三方的插件,可以拓展webpack的能力,从而让webpack用起来更方便。最常用的webpack插件有如下两个:webpack-dev-server类似于node.js阶段用到的nodemon工具每当修改了源代码,webpack会自动进行项目的打包和构建html-webpack-pluginwebpack......
  • 四、Jenkins集成Docker
    重用之前的my_test项目增加Jenkins集成Docker。之前是构建完项目后,上传jar包并执行sh脚本启动jar包。现在是将jar包上传到Docker服务器上,并用Dockerfile构建镜像,启动容器。一、Jenkins新增SSHserver 找到SSHServers:  Jenkins部署在阿里云云主机上,这里用另一台云主机,......
  • FL Studio21教程之如何插入第三方插件
    FLStudio21是一款非常容易上手同时又特别强大的编曲软件,FLStudio21拥有一些内置插件,如Soundgoodizer,也可以插入第三方插件。本文将介绍在FLStudio21使用过程中如何插入第三方插件的方法过程,感兴趣的一定要关注哦。首先,打开FLStudio21软件,在通道列表中任意选择一个通道,右击,......
  • windows环境下使用Jenkins配置dotnet core极简入门
    1、环境准备1、安装Jenkins所依赖的Java环境,注意Java版本要与Jenkins要求的版本一致方法参照:Java开发环境配置|菜鸟教程(runoob.com)2、下载git工具:https://git-scm.com/download/win3、下载安装Jenkins:https://www.jenkins.io/download/jenkins的安装过程可参照:wind......
  • kindle7插件开发笔记[2]-使用Rust重写插件
    前言上一篇笔记:kindle7插件开发笔记[1]-在折腾中入门代码地址:https://gitee.com/qsbye/kindle-plugin-touch摘要用Rust语言重写在Kindle上显示图片的插件,初步实现了图片完整显示及自动刷新屏幕的功能.说明Kindle7的屏幕信息eips-i结果:Fixedframebufferinfoi......
  • 安装jenkins
    在https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/下载所需版本的jenkins的rpm包,这里要注意,从2.357版本开始需要jdk11,如果使用的就2.357及以后的版本,那么jdk可以使用yum安装openjdk。安装jenkins:~]#yum-ylocalinstalljenkins-2.332.4-1.1.noarch.rpm之后修改/et......
  • pod 插件报错: LoadError - cannot load such file -- cocoapods/command/gen
    报错信息:LoadError-cannotloadsuchfile–cocoapods/command/gen解决方法:geminstallcocoapods-generate......
  • Revit二次开发实战04(元素搜集过滤器FilteredElementCollector)
    Revit二次开发实战 FilteredElementCollector元素搜集过滤器1、创建搜集器FilteredElementCollector(Document);搜集文档中所有元素;FilteredElementCollector(Document,List<ElementId>);在指定id集合中搜集;FilteredElementCollector(Document,ElementIdviewId);在......
  • Waves 14 Complete Mac (Waves混音效果全套插件)
    Waves14Complete是一款全功能的音频处理软件套装,包含超过140个插件,可用于各种音频处理和音乐制作任务。这个套装包含了多种不同类型的插件,包括均衡器、压缩器、混响、延迟、合成器、调制器等等。Waves14Complete还提供了许多专业级功能,如自适应限制、自动启动时间校准、360度......
  • 吐血推荐珍藏的 Chrome 插件二
    了解我的人知道,我一直是Chrome的死忠粉,Chrome那丰富的插件可能是我这么钟爱Chrome的原因之一,我在去年的时候写过一篇文章,推荐了一些我常用的Chrome插件给大家,很多读者是因为那篇文章从此也爱上了Chrome,那么时隔一年多的时间,今天再给大家更新一些很棒的Chrome插件。1.Lis......