前几天把Jira、Confluence、Fisheye集成环境搭建好了,今天进一步把Jenkins和Jira做了一个集成,目的就是通过Jira通知Jenkins任务已经完成,可以发布了。然后Jenkins获取通知后自动抓取Jira任务单关联的代码清单,完成增量发布。在集成过程中确实有一些关键点有必要记录下来,分享给大家。
1、首先是Jira任务单和代码的关联
这一部分是通过Jira和Fisheye的集成实现的,这样在Jira的任务单里就可以看到源码的标签页,列出了这个Jira单关联的代码清单。那么这个任务单和代码清单是怎么关联的呢?这就要求我们在上传代码到SVN的时候,在备注里填写上Jira的单号,这样就通过Fisheye让任务单和代码清单建立的关联。
2、Jira任务改变要通知到Jenkins
这个功能是通过Jira的网络钩子功能和Jenkins中的Jira插件实现的,具体配置如下:
①Jenkins中安装JIRA Trigger Plugin插件,然后配置Jira的地址和登录信息
②Jira中创建网络钩子,其中url是:http://你的Jenkins地址/jira-trigger-webhook-receiver/
③这样当Jira中任务发生变化后,就会通过网络钩子通知到Jenkins
3、Jenkins中配置触发构建的条件
安装好JIRA Trigger Plugin插件后,在触发构建选项中就能看到两个新的触发条件:
- Build when a comment is added to JIRA
- Build when an issue is updated in JIRA
通过在JIRA任务单中添加备注或者通过检测JIRA任务单的状态变化,来触发Jenkins构建,这里我以第一个为例子进行了配置:
这里的JIRA_ISSUE_KEY变量,可以在后面的构建shell中使用,通过该变量获取到Jira的key。
4、编写shell,根据Jira的Key或者Jira任务状态获取到代码清单列表
这一步我是通过Java代码调用Jira和Fisheye提供的API实现的,API文档如下:
- https://docs.atlassian.com/fisheye-crucible/latest/wadl/fisheye.html
- https://docs.atlassian.com/jira/REST/6.3.6/
然后在shell中获取到Java代码查询到代码清单,进行更新发布。大家可以自行参考这个文档,使用合适的rest API实现。
5、最后看一下效果
在Jira任务单中添加备注:请发布,很快就会收到Jenkins反馈的备注信息,提示已经安排发布
再看看Jenkins中的发布日志,可以看到确实获取到改该任务单的代码清单
文章评论