JIRA 知多少:聊一聊 Android Studio 、工作流
Android Studio 相关
配置 JIRA 服务器


如果细心的话会发现有一个选项卡:Commit Message。这一段代码是不是有点熟悉呢?你没有猜错,这段代码就是 commit 模板,当你切换 task 后在git commit 时会自动将任务的id 和 简介配置到 commit 信息里。

切换到某个 JIRA 任务
点击工具栏上的 Default task ,下方显示的是最近打开的任务。点击 open Task 会显示出指派给你的任务,点击可以切换到对应的任务:


这里要记得勾选 create changelist。另外建议不要使用默认勾选的 create branch,否则每一次切换任务后本地都会新建对应的分支,到后面分支茫茫多的时候看得蓝廋~

可以看到,切换到该任务后,使用 AS 自带的 git commit 时,会自动将任务 id 和简介显示出来,结合 JIRA 的 Smart Commits,只要在 commit 信息中添加对应的标识(例如我设置了 finishDev 为从“开发中”状态转换为“测试中”状态的标识,文章下面会介绍如何设置对应的状态转换标识),然后 push 这条 commit 到远程,就可以自动更改
JIRA 任务状态,so easy~


Smart Commit 配置
看了上面的示例是不是开始觉得 JIRA 有点意思了?要使用 Smart Commit 你需要先在项目里配置一下 git
项目里添加 git 仓库


在关联完 git 仓库后,你需要进行一次索引的操作。那么问题来了,难道每次在
git 上提交 commit 都得通知 JIRA 更新索引吗?答案既是肯定的也是否定的,要使得 JIRA 可以根据 git commit 修改任务状态,必然要在 git 每次提交 commit 时更新索引,但这个动作当然不是由我们手动来触发,而是使用 webhooks。
github/gitlab 里配置 webhooks
右上角小齿轮 - 应用程序 - 选择左下方 webhooks,获取那一串 http 开头的 url

再到 github/gitlab 中配置 url,此处 Secret Token 不用填

webhooks 配置好后,每次 git 接收到 commit 时都会自动通知 JIRA,JIRA 根据 commit 内容识别是否为与任务操作相关的提交,并更新任务状态。
JIRA 配置相关
编辑视图

创建工作流

创建转换状态
该状态的命名即为 Smart Commit 时的标识符 例如 ‘‘Bug-5 #finishDev 修复###问题’’

编辑转换状态
编辑转换状态之前记得点击右上角的编辑按钮将工作流置于编辑状态

点击编辑按钮,可以为工作流状态转换配置编辑视图(例如需要填写备注、解决结果等),该视图在右侧 界面 - 添加屏幕 中编辑。

不得不提的是上图中另外勾红的两处,其实不止两处,转换状态的处理有四大块,这里简要介绍一下我使用到的两块内容:
条件
顾名思义,为转换状态前置某些条件判断,只有符合条件才允许做状态的转换,否则在任务里直接不可见该转换状态。
举个栗子,如果任务 A 下有子任务 b 和子任务 c,正常来说我们肯定不希望在b, c 完成前就可以将 A 完成,故可以对工作流中 close 转换状态做一个限制,如图:

构造子任务阻止条件

构造该条件后,建个 demo 试试看:

可以看到,父任务已经在开发中状态了,但转换状态只有 back(回退这一个操作了),因为其子任务还是启动状态,不符合转换条件。
后处理功能
后处理功能的功能非常多,这里简要提几种功能与场景抛装引玉:
场景一:开发完成测试,经办人自动分配为测试负责人


这里有个需要注意的地方,这里我选择的是 Raw Value, 经过测试填写名字和邮箱都是无法生效的,要填写用户的 id,例如在用户选择器里可以看到每个用户的 id,填写这个 id 就可以成功分配值了。

场景二:现在用户A创建了一个任务,项目的负责人B将其分配给了经办人C,C在处理完成后将任务自动分配给了报告人A,A在进行确认时发现不符合要求,执行一个自定义工作流动作“退回”时,希望可以将任务退回给C。
但是问题是,C在处理完成时将任务分配给了报告人A,此时经办人和报告人都是A了,所以无论在工作流动作的处理结果中选择分配当前用户、分配给报告人、分配给项目负责人都无法实现退回给C的需求。
这个需求是在搜索资料的过程中看到的,Kenny Jin 提供了这样的解决方案:copy value from field to field。该操作也是在后处理设置里。

场景三:状态转换为 close 时,自动将问题解决结果置为完成(否则即使状态已切换为完成,但解决结果未改变,则任务会一直在打开的问题里展现)
同样是后处理功能的设置:


场景四:记录任务参与者,便于统计工作报表
JIRA 的经办人一次只能指定一个用户,为了实现这种功能,我的想法是创建一个自定义字段(类型为多用户选择器),在每次开发者参与到任务中时(或者上游切换状态时就将经办人分配下一个开发者),将经办人添加到该字段内,最后在报表中选择以该字段为筛选值即可。
右上角小齿轮 - 问题 - 左侧


通知方案:自动邮件通知执行者
右上角小齿轮-问题-下方选择通知方案,自定义一个通知方案。

在这之前要先配置一下邮箱,这里提供一下网易企业邮箱的 SMTP 服务器地址:smtp.ym.163.com 默认端口为:25 (如勾选ssl安全链接,端口号为994),详见客户端的设置方法。
配置好后,点击右上角小齿轮 - 项目,进入项目主页,将通知方案设置上去

