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

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

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

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

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

QQ机器人

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

  • WebQQ:早一些,协议破解的已经很完整,并且有不少以此为基础的工具。悲剧的是QQ已经停止WebQQ服务了。
  • SmartQQ:正在使用中的QQ协议,工具不多。

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

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

  • 使用Perl语言编写,插件式的设计结构。
  • QQ基本功能,如:可发送消息到个人和QQ群。
  • 提供基于HTTP协议的api接口供其他语言或系统调用的插件。
    repo地址:https://github.com/sjdy521/pfqq

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

Mojo-Webqq

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

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

Jenkins插件编写

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

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

  • 安装Maven,添加环境变量。
  • 把maven/conf/settings.xml复制到~/.m2/settings.xml下。
  • 注意:mvn的操作需要下载各种各样的依赖,而且悲剧的是依赖很可能下载失败,需要尝试翻墙等等各种方法。

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 即可。

  • 按照要求修改settings.xml,注意不是直接加到文件末尾,要对应XML格式修改settings。
  • 修改完成后mvn hpi:create即可创建新插件。

插件结构

  • 插件代码结构分两部分:jelly为基础的xml的界面配置、java进行数据绑定和插件功能实现。
  • jelly中的field值和java中的构造函数参数名需要一致、jelly的xml结构需要注意。

关于扩展点

有两个格式的扩展点:

  • Singleton Pattern
  • Describale/Descriptor Pattern

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

  • 顶部的复选框部分,对应JobProperty
  • Build Environment部分,对应BuildWrapper,可以定义环境变量用在后面的阶段
  • Build部分(Add build step),对应Builder,可以定义Build行为
  • Builder部分(Add Postbuild action),对应Notifier,可以定义编译后的行为,如结果通知

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容