QQ机器人和Jenkins插件编写【转】

2017-01-19  本文已影响305人  Detailscool

Jenkins是一个有名的可持续集成工具,使用现有的插件就可以很容易的搭建一个软件自动集成环境。

Jenkins使用过程中,发现一个常见场景:用Jenkins开始打包,然后马上投入正常工作,接下来就把打包的事情忘记了。这样产生一个问题是不能及时的展开打包的下一步工作;另外的情况下,一直挂记这件事时不时上Jenkins查看编译状态,影响当前的工作。于是我思考一种解决方法:

编译结果直接通知到QQ岂不是很方便?

于是开始在Github有意的关注QQ机器人类似的repo,也从中了解了一些QQ机器人的基本情况。

QQ机器人

QQ协议并不开放,QQ机器人都是基于破解WebQQ协议实现的。WebQQ协议分为两种:

pfqq 已经停止更新 请使用Mojo-Webqq

这是一款非常好用的基于SmartQQ的工具:

具体使用方法看源码的Demo和Doc说明。

Mojo-Webqq

2015.10.20更新,pfqq作者的重构项目,使用方法基本相同。

到这里问题已经解决了一大半,接下来把功能集成到Jenkin就好了。

Jenkins插件编写

网上可以找到一些中文资料,但并不面面俱到。官网的文档也相当不友好,关键概念没有点明,看了几遍文档还是一头雾水,只能通过参考现有插件慢慢摸索。下面主要是开发过程中的一些问题记录。

官方文档:Jenkins Tutorial 可以参考用来搭建开发环境,简要步骤如下:

Eclipse下进行插件的开发

开发效率会提升很多,代码提示、编译错误上就可以节约不少时间。执行如下命令:

mvn -DdownloadSources=true -DdownloadJavadocs=true -DoutputDirectory=target/eclipse-classes -Declipse.workspace=/path/to/workspace eclipse:eclipse eclipse:add-maven-repo

Where /path/to/workspace is the path to your Eclipse workspace.

下载个半天的依赖,并显示成功后,就可以在Eclipse中导入插件工程了。如果有报错,看 TroubleShooting 即可。

插件结构

关于扩展点

有两个格式的扩展点:

我目前对于扩展点理解是:Job配置界面中有很多的分区,界面元素区域和功能对应扩展点类。比如:

写插件的第一步就是确认扩展点,随着需求的增加会对扩展点有更深入的认识。

Jelly编写

可用的tag说明:Jelly tag Ref

官方有个Sample UI的插件,可以用来参考学习UI编写。

Dynamic是件非常麻烦的事情。。。搞了半天没搞定,貌似没有动态能力。

Debug

运行下面的命令,执行完成后启动Jenkins,并进入debug模式:

export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n"
mvn hpi:run

非常方便,jelly修改后直接刷新即可看到更新。

依赖外部jar包

需要将依赖写入pom文件,比较烦的是不容易找到groupid/artifactid等信息。查了一些资料,也有直接安装本地jar包的方法。

总结

Jenkins插件编写没有想象那么简单,不过结果是好的,最终完成了整个工具。Jenkins插件可以在Job中配置要通知到的个人QQ和QQ群,还有QQ消息内容。在编译机运行pfqq服务,每当编译完成就可以发送消息到QQ了。╮(╯▽╰)╭

转自:QQ机器人和Jenkins插件编写

后记,原文已经失效,唯有用时光机恢复过来,markdown整理一下,不失一好文。

参考:
Jenkins 发送QQ消息
sjdy521/Mojo-Webqq
go3k/NotifyQQ

上一篇 下一篇

猜你喜欢

热点阅读