软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一。

本文介绍 Issue 的基本用法。

Issues是什么技术 issuej_Issues是什么技术

一、Issue 是什么?

Issue 指的是一项待完成的工作,通常与系统的改进相关,中文可以译为"问题"或"事务"。下面这些都是 Issue 的例子。

  • 一个软件的 bug
  • 一项功能建议
  • 一项待完成的任务
  • 文档缺失的报告

每个 Issue 应该包含该问题的所有信息和历史,使得后来的人只看这个 Issue,就能了解问题的所有方面和过程。

Issues是什么技术 issuej_优先级_02

历史上,Issue 起源于客服部门。用户打电话反映问题,客服就创建一个工单(ticket),后续的每一个处理步骤、每一次与用户的交流,都要更新工单,记录全部信息。这就是 Issue 的前身。

Issues是什么技术 issuej_Issues是什么技术_03

因此,Issue 的原始功能是问题追踪和工单管理,后来不断扩展,逐渐演变成全功能的项目管理工具,还可以用于制定和实施软件的开发计划。

除了软件,其他项目也可以使用 Issue,比如有人把自己住宅的改善计划都做成了 Issue。

二、Issue 跟踪管理系统

专门管理 Issue 的软件,叫做 Issue 跟踪管理系统(Issue tracking system)。它面向所有人,普通用户也可以使用。

还有一种 Bug 跟踪管理系统,通常只面向开发者,比如下图的 Bugzilla。它和 Issue 系统可以同时使用,但是也可以被 Issue 系统取代。

Issues是什么技术 issuej_管理系统_04

一般来说,Issue 跟踪管理系统应该具有以下功能。

  • 项目管理   - 指定 Issue 的优先级   - 指定 Issue 所在的阶段   - 分配负责 Issue 的处理人员   - 制定日程   - 监控进度,提供统计
  • 团队合作   - 讨论   - 邮件通知
  • 代码管理   - 将 Issue 关联源码   - 将 Issue 关联代码提交与合并

三、Github Issues

目前,最出名的 Issue 跟踪管理系统是 JIRA。它是一个收费软件,这里就不介绍了。下面通过免费的 Github Issues,来介绍如何使用 Issue。

Issues是什么技术 issuej_管理系统_05

3.1 基本用法

每个 Github 代码仓库都有一个 Issues 面板。

Issues是什么技术 issuej_管理系统_06

进入该面板,点击"New Issue"按钮,就可以新建 Issue。

Issues是什么技术 issuej_管理系统_07

上图是新建 Issue 的界面,左侧填入 Issue 的标题和内容,右侧是四个配置项(只有项目管理者才能看到)。

  • Assignees:人员
  • Labels:标签
  • Projects:项目
  • Milestone:里程碑

下面,一个个介绍这些配置项。

3.2 Assignee

Assignee 选择框用于从当前仓库的所有成员之中,指派某个 Issue 的处理人员。

Issues是什么技术 issuej_看板_08

下拉框里面单击人名即可。

3.3 Labels

Issue 可以贴上标签,这样有利于分类管理和过滤查看。

Issues是什么技术 issuej_优先级_09

新建标签,要在 Issues 面板的首页,点击 Labels 按钮。

Issues是什么技术 issuej_优先级_10

这时,会显示六个默认的标签。

Issues是什么技术 issuej_Issues是什么技术_11

如果想新建更多的标签,可以点击 New label 按钮。然后,填写标签名,选择标签颜色。

Issues是什么技术 issuej_管理系统_12

3.4 常用 Label

对于大型项目, 每个 Issue 至少应该有两个 Label ,一个表示性质,另一个表示优先级。

表示性质的 Label,可以参考这篇文章的范例。

Issues是什么技术 issuej_优先级_13

表示优先级的 Label,可以采用下面的级别。

  • 高优先级(High):对系统有重大影响,只有解决它之后,才能去完成其他任务。
  • 普通优先级(Medium):对系统的某个部分有影响,用户的一部分操作会达不到预期效果。
  • 低优先级(Low):对系统的某个部分有影响,用户几乎感知不到。
  • 微不足道(Trivial):对系统的功能没有影响,通常是视觉效果不理想,比如字体和颜色不满意。

3.5 Milestone

Milestone 叫做"里程碑",用作 Issue 的容器,相关 Issue 可以放在一个 Milestone 里面。常见的例子是不同的版本(version)和迭代(sprint),都可以做成 Milestone。

新建 Milestone,要在 Issues 面板的首页,点击 Milestones 按钮。

Issues是什么技术 issuej_Issues是什么技术_14

这时,再接着点击 New milestone 按钮,然后填写 Milestone 的名称和内容,还可以指定到期时间。

Issues是什么技术 issuej_优先级_15

3.6 全局视图

Issues 面板只能查看和操作当前仓库,Github 还提供全局视图,让用户查看和操作所有与自己相关的 Issue。

访问 github.com/issues 这个网址,就可以打开全局视图。里面的 Issue 分成三类。

Issues是什么技术 issuej_Issues是什么技术_16

  • Created:你创建的 Issue
  • Assigned:分配给你的 Issue
  • Mentioned:提及你的 Issue

Created 和 Assigned 的含义显而易见,Mentioned 是指他人在 Issue 里面 @ 了你。下面是一个例子。

It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?

/cc @kneath @jresig

全局视图还提供了搜索、过滤和排序功能。

Issues是什么技术 issuej_管理系统_17

四、看板功能

4.1 看板是什么?

看板(kanban)是敏捷开发的重要手段,主要用于项目的进度管理。所有需要完成的任务,都做成卡片,贴在一块白板上面,这就是看板。

Issues是什么技术 issuej_优先级_18

按照不同的阶段,看板分成若干列。上图是一种常见的分法,将项目周期分成三列。

  • Todo (待开发)
  • Doing (开发中)
  • Done (已完成)

你可以根据实际情况,分出更多的列。

Issues是什么技术 issuej_优先级_19

  • Todo (待安排)
  • Plan (计划)
  • Develop (开发)
  • Test (测试)
  • Deploy (部署)
  • Done (已完成)

4.2 Github 的看板功能

Github 提供 Issue 看板。首先,在仓库首页进入 Projects 面板。

Issues是什么技术 issuej_Issues是什么技术_20

然后,点击 New Project 按钮,新建一个 Project,比如"2.0 版"。

Issues是什么技术 issuej_Issues是什么技术_21

接着,点击 Add column 按钮,为该项目新建若干列。

Issues是什么技术 issuej_管理系统_22

最后,将 Issue 分配到对应的列,就新建成功了一个看板视图。

Issues是什么技术 issuej_Issues是什么技术_23

Issue 可以从一列拖到另一列,表示从一个阶段进入另一个阶段。

许多第三方工具可以增强 Github 的看板功能,最著名的是 Zenhub,这里就不详细介绍了。

Issues是什么技术 issuej_看板_24

五、码云的 Issue 系统

除了 Github 以外,Gitlab 也提供免费的 Issues 管理系统,而且 比前者更易用。但是,我不打算介绍它,而是想介绍开源中国社区推出的代码托管服务码云(Gitee.com)。

Issues是什么技术 issuej_看板_25

码云是 Gitlab 的深度定制,提供汉语界面,符合国人的使用习惯,并且访问速度极快,我感觉比 Gitlab 快了一个数量级。另一方面,开源中国的红薯老大一直支持我,我也想借这个机会,推广一下他们的产品,让更多的人知道这个优秀的国产 SaaS 服务。

5.1 新建 Issue

码云的每个仓库都有一个 Issues 面板。进入后,点击新建 Issue,就可以创建 Issue 了,里面的设置项比 Github 丰富好多。(注意,只有仓库的管理员才能看到设置项。)

Issues是什么技术 issuej_看板_26

其中的"负责人"(Assignee)、"标签"(Label)、"里程碑"(Milestone)与 Github 完全一致。"关联分支"指定 Issue 归属于哪一个分支,"开始时间"和"结束时间"指定处理日程。"置顶选项"指定哪些 Issue 出现在最前面,而且还分成高中低三档。

Issues是什么技术 issuej_优先级_27

由于设置多,所以 Issue 列表提供的过滤开关也多。

Issues是什么技术 issuej_Issues是什么技术_28

5.2 看板功能

码云的看板功能比 Github 更友好,直接提供四个现成的看板。

Issues是什么技术 issuej_管理系统_29

  • 待处理
  • 进行中
  • 已完成
  • 已验收

所有 Issue 的初始状态都是"待处理",用户可以手动把它们拖到其他列。

5.3 企业版

码云跟 Gitlab 一样,也提供企业版。里面的"任务"模块有一个强大的 Issue 全局视图,分成四种浏览模式。

Issues是什么技术 issuej_Issues是什么技术_30

  • 指派给我的
  • 我发布的
  • 我参与的
  • 全部任务

这是默认的列表视图,可以点击右上角,切换成全局的"看板视图"。

Issues是什么技术 issuej_看板_31

这个界面还可以直接新建任务,而不用进入仓库主页。新建任务时,允许指定"关联项目"、"负责人"和"预计工时"。

Issues是什么技术 issuej_看板_32

新建任务以后,还可以对任务进行再次编辑,这时可以设置"优先级"、"关联项目"和"子项目"等。

Issues是什么技术 issuej_优先级_33

我就介绍到这里了,接下来你可以点击进入 Demo,体验一下上面介绍的各项功能。

(完)