上回书我们介绍了DevOps的概念和发展,一个好的理念的应用,离不开好的工具支撑,在信息技术领域尤其如此。因此,我们今天介绍一下DevOps工具集里面的协同开发工具。
JIRA是Atlanssian公司开发的用于敏捷团队进行项目管理的工具,它支持当下主流的敏捷项目管理方法,如Scrum、看板和团队自定义的敏捷管理方法。通过敏捷展示板可以实现项目计划、日常敏捷项目管理和项目报告。
(1) Project(项目):JIRA中的项目是一组问题单(Issue)的集合,项目可以根据组织需求来定义。每一个问题单属于一个项目。每个项目需要有一个名称和关键字。项目的关键字会成为项目问题单前缀。
(2) Workflow(工作流):JIRA中的工作流由一系列的状态和变迁构成,一个问题单在其生命周期中会经过这些状态和变迁。如下图所示。
(3) Issue(问题单):JIRA的问题单非常灵活,页面可以定制,字段也可以定义。问题单类型默认有以下几种类型:
Bug — 故障,功能失效;
Improvement — 提升,既有功能增强;
New Feature — 新功能;Task — 任务;
Custom Issue — 根据需要客户化定制。问题单优先级默认有以下几种类型:
Highest — 最高级别,表明问题阻塞了业务流程正常进行;
High — 高级,表明问题引发明显故障,需要紧急关注;
Medium — 中级,表明问题有一个明显的影响;
Low — 低级,表明问题有一个轻微的影响;
Lowest — 最低级。每一个问题单都会有一个当前的状态。一个问题单开始阶段可能是Open状态,然后可以转移到Resolved或者Closed,依赖于系统流程配置的方式。内置的常见状态如下:
Open — 打开状态,表明问题单已经被创建,等待被分配到开始处理状态;
In Progress — 处理中状态,表明问题单已经被分配人激活,并处于被处理状态中;
Resolved — 已解决状态,表明问题已经被处理完成,等待问题报告人的验证。从这个状态,问题单一般可以进一步变更为重新打开状态(Reopened)或关闭状态(Closed); Reopened — 重新打开状态,问题经过验证发现没有被解决,就可以变更到这个状态;
Closed — 关闭状态,问题被彻底解决后就可以转为这个状态。一个问题可以有多种解决结果,其中只有一种方法是修复。一个解决结果通常会在状态变更的时候被设置起来。系统默认的问题解决结果会有以下几种:
Fixed — 修复;
Won't Fix — 老子不修复。例如这个问题所描述的现象已不再有影响了;
Duplicate — 重复。同其它已经存在的问题重复了,推荐把相关的单子链接起来;
Incomplete — 未完成。没有足够的信息继续完成这个问题;
Cannot Reproduce — 不能重现。如果以后有更多信息可以继续可以重新打开这张单子;
Won't Do — 老子不做。类似于不用修复的方案,适用于软件项目的默认状态。
Kanboard工具是提供给那些想提高项目管理效率,使项目管理简单化的团队所使用的。它能够让团队的日常工作可视化,让团队的工作更高效,且易学易用。Kanboard提供的典型功能有:
(1) 清晰的任务状态展示:Kanboard将故事卡进行可视化,使用不同色块区分不同类型的故事卡,清晰且易于管理。根据业务活动可以个性化地定制看板展示板,增加或减少活动列,方便操作。
(2)支持拖拽:在日常管理中,Kanboard支持自由拖拽,可以直接拖动看板上的故事卡到目标列中。
(3) 更有效地跟踪处理中的任务:Kanboard提供WIP(Work In Process)列,这个功能将看板方法中的在制品概念有效地引入到日常管理中,方便快捷地查看在制品项,通过设定在制品上线数量,暴露问题,解决问题,从而提升交付速率和交付质量。
禅道是一款开源的项目管理软件,它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款专业的研发项目管理软件。
禅道的主要管理思想基于国际流行的敏捷项目管理方式—Scrum。Scrum是一种注重实效的敏捷项目管理方式,它规定了核心的管理框架,但具体的细节还需要团队自行扩充。禅道在遵循其管理方式基础上,又融入了国内研发现状的很多需求,比如bug管理,测试用例管理,发布管理,文档管理等。因此禅道不仅仅是一款scrum敏捷项目管理工具,更是一款完备的项目管理软件。基于scrum,又不局限于scrum。
禅道最大的特色是创造性地将产品、项目、测试这三者的概念明确分开,互相配合,又互相制约。通过需求、任务、bug来进行交相互动,最终通过项目拿到合格的产品。
禅道支持云端和本地搭建,功能覆盖得很全面,支持配置多种插件,支持项目管理和测试管理,从开发一个项目开始,到中间的各个环节,都有相应的功能进行管理。支持自定义配置需求、任务、bug、用例、流程等,设置部分都是批量添加的模式,非常方便。但也有一些缺点,如界面设计不够简洁,稍稍逊色,入门有一些难度,有一定的学习成本。
Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统。集成了项目管理所需各项功能:日历、燃尽图和甘特图以协助可视化表现项目与时间限制,问题跟踪和版本控制,Redmine也可以同时处理多个项目。支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如SVN、CVS、TD等等。这种Web形式的项目管理系统通过“项目(Project)”的形式把成员、任务、文档、讨论以及各种形式的资源组织在一起,成员参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。
Redmine包含的功能如下:
(1) 多项目支持:可以在一个Redmine平台上管理所有项目;用户在不同项目中可以是不同的角色;项目可设定为公开的或者内部的;可在项目中激活或隐藏模块。
(2) 基于角色的灵活访问控制:可以自定义每个redmine里面的角色信息,并自定义其权限。
(3) 灵活的问题跟踪系统:可以自定义问题类型和问题状态;可以通过web管理界面为每种问题类型和角色设置工作流程。
(4) 甘特图和日历:自动根据问题的开始、结束时间,自动生成项目的甘特图和日历,方便进行项目的跟踪,并且自己动根据问题的状态在甘特图中显示不同的颜色。
(5) 时间跟踪功能:在项目级别或者问题级别设定时间;根据用户,问题类型,类别或者活动生成工作报表。
Redmine是免费开源,具备良好的扩展性,可以在此基础上做适合自己公司的扩展开发,它的B/S架构非常方便使用,很适合团队的项目管理,可与GitLab可集成,实现需求与代码双向绑定。也和一些版本管理和错误跟踪工具的初步集成也让项目管理更加轻松容易。Redmine很实用,但是只考虑了功能性,界面设计的很简单且不美观。