[技术博客]使用Github进行软工开发管理
一、介绍
项目 | 内容 |
---|---|
本作业属于北航软件工程课程 | 博客园班级博客 |
团队项目博客目录 | 团队项目:知识路书 |
团队博客 | 敏杰开发 |
代码仓库 | Roadmap-Frontend |
我在这门课程的目标是 | 获得成为一名软件工程师的能力 |
我在本次作业的目标是 | 总结、分享团队使用Github进行软工开发管理的方法 |
我是北航软件工程课敏杰开发团队的产品经理,我们团队开发的软件产品为知识路书——图形化文献管理大师。如果您想了解我们开发的软件在做什么,请查看这篇博客,如果您想全面了解我们开发的软件,可以在我们的开发博客目录查看全部的博客,或访问我们的代码仓库。
二、引言
Github是一款目前应用最广的代码管理、项目管理平台,其免费、易用、人性化等特性吸引了全球众多开发者。在软件工程课中,我们应该学会使用项目管理软件来进行项目管理,本文主要介绍了Github网站项目管理的基本方法,包括仓库的配置、工作流、项目管理、工作量统计等功能。可能有很多刚刚接触开发的小白和我之前一样,并没有深入地使用过Github除了代码托管以外的其它功能,那么在看完本文之后,您可以尝试探索使用Github的这些功能,您会发现,好用至极,根本停不下来~。
三、Github开发管理
1. 仓库配置
仓库包含两个特殊分支
- dev 开发分支
- 用于合并最新的开发代码
- prod 生产分支
- 用于存储生产代码
我们的工作流是:个人开发时由dev
分支checkout出来一个新分支例如zwx--new-feature
,开发结束后通过代码互审合并到dev分支,完成某一整块的功能后,将dev
分支合并到prod
分支,并使用github的release功能发布一个新的版本。
分支保护
Github提供了十分方便的分支保护功能,我们可以利用其实现上述的工作流配置。
- dev分支
在仓库的settings中选择branch选项卡,可以添加分支保护规则,我们对dev分支配置规则:只能通过pull request的方式merge到dev,并设置PR需要审核的人数。
这样,我们的工作流被限定为,新分支zwx--new-feature
开发完成后,提出merge到dev
分支的Pull Request
(后文将详细介绍),经过一名其它成员的复审后,合并到dev分支。 - prod分支
采用类似的配置方法,但是我们要求至少2人审核后,才能将dev
分支的代码merge到prod
中。
2. 开发工作流
Issue
在需求分析、任务分解结束后,产品经理将一个大块的功能分成若干小的、可以单人实现的小功能,这些小功能通过Github中的Issue功能分配给特定的开发人员。
当我们想为某开发人员添加一个Issue的时候,可以用下述这种方式:
- 编辑任务说明
- 添加分配人员
- 设置issue标签,这里的size是我们用来统计工作量的
- 设置Project和Milestone,这个将在后面介绍
开了新的Issue以后,Github会给被分配到任务的开发人员发电子邮件,push他快去写代码。
Pull Request
在开发人员完成某个Issue的需求后,可以利用Github的Pull Request功能提出代码复审、合并分支的请求
我们的一个Pull Request如下:
- 填写实现功能的描述
- 分配Reviewers,提醒他们审核你的Pull Request
- 在描述文本框中,输入close #IssueID,可以自动将该PR与Issue关联,当PR被合并后,Issue自动关闭。
作为代码复审的人员,通过点击File changed
标签页,审核开发人员修改的代码,对其代码提出评论,当认为其通过审核后,在评论中选择Approve
,当Approve的人数达到分支保护规则的要求时,就能够合并分支了。
在合并时,Github会自动检测有无冲突,如果有冲突,会要求Resolve conflicts,Github提供了解决冲突的页面,点击Resolve conflicts
按钮可以直接在Github网站中解决冲突,提交commit,十分方便。
在冲突解决、代码复审完成后,merge的按钮被允许点击,可以使用Squash and Merge
的选项,将这个分支内的所有commit压缩成一个commit进行合并。
3. Project、Kanban、Milestone
Project
Github提供了非常方便的项目管理工具Project,可以使用其管理项目进度,还可以生成燃尽图等总结图表,帮助项目管理人员进行进度监督。
我们的开发共分为两个阶段,分别开了两个Project,目前alpha
的开发项目已经结束,beta
的开发项目还在进行中。
Kanban
Github项目管理最重要的功能是看板,点击进入项目后,可以看到如下的看板界面,上面显示着各个功能的开发进度。可以对看板进行设置,让其自动关联Issue,追踪Issue的生命周期
- 当Issue被创建时,看板的
To do
中自动出现卡片 - 当Issue被PR所close后,
To do
中的卡片自动移入Done
中
Milestone
当创建了一个Project后,Github会自动创建一个同名的Milestone,可以利用Milestone功能生成项目的燃尽图。
在创建Issue时,绑定一个Milestone。可以点击Issue标签页中的Milestone按钮,查看所有绑定该Milestone的Issue
生成燃尽图,参考这篇博客,使用https://www.cnblogs.com/SivilTaram/p/4900457.html网站生成燃尽图,燃尽图如下:
4. 工作量统计
Github提供了方便且详尽的工作量统计功能,点击Insight
标签页可以看到各个维度下的工作量统计数据,对于项目经理等项目管理人员,可以很方便地得到每位开发人员的贡献与进度等信息,帮助其更好地管理团队。
四、总结
本文主要介绍了Github网站项目管理的基本方法,包括仓库的配置、工作流、项目管理、工作量统计等功能。可能有很多刚刚接触软件工程的小白和我之前一样,并没有深入地使用过Github除了代码托管以外的其它功能,那么在看完本文之后,您可以尝试探索使用Github的这些功能。同时Github还有很多功能是本文没有介绍到的,也是笔者没接触到的,您可以继续挖掘Github的更多功能,并分享给更多人。