- 引言
- 本书涉及的内容
- 第 1 部分 Python 开发入门
- 第 1 章 Python 入门
- 第 2 章 开发 Web 应用
- 第 3 章 Python 项目的结构与包的创建
- 第 4 章 面向团队开发的工具
- 第 5 章 项目管理与审查
- 第 6 章 用 Mercurial 管理源码
- 第 7 章 完备文档的基础
- 第 8 章 模块分割设计与单元测试
- 第 9 章 Python 封装及其运用
- 第 10 章 用 Jenkins 持续集成
- 第 11 章 环境搭建与部署的自动化
- 第 12 章 应用的性能改善
- 第 13 章 让测试为我们服务
- 第 14 章 轻松使用 Django
- 第 15 章 方便好用的 Python 模块
- 附录 A VirtualBox 的设置
- 附录 B OS(Ubuntu)的设置
4.1 问题跟踪系统
要想让团队开发顺风顺水,首先就要把握每个开发任务的负责人是谁、开发进展到了什么程度等信息,并把这些信息整理起来。在这类任务管理工作上,问题跟踪系统(Issue Tracking System,ITS)是一把好手。
我们可以将开发中的任务添加到问题跟踪系统,然后用该系统来追踪、管理这些任务的状态。多数问题跟踪系统会以问题(Ticket)为单位进行项目管理。一般情况下,我们会把工作任务以问题的形式添加到问题跟踪系统,而不是单纯拿它来管理项目。
问题跟踪系统可以给问题添加状态(新建、进行中、解决、结束、驳回等),设置优先级(紧急、高、普通、低)、负责人、日期等,并且允许用户通过搜索查看信息一览,让我们能随时把握项目的开发情况。
将作业分割成一个个任务,再将任务分配给问题进行管理,这种开发手法称为问题驱动开发(Ticket Driven Development,TiDD)。它与敏捷开发有着很好的相容性,因此在近年来的开发中人们逐渐开始实践这种手法。关于问题跟踪系统的实际运用以及问题驱动开发的相关知识,我们将在第 5 章中进行学习。
4.1.1 Redmine
接下来,我们来了解一款问题跟踪系统——Redmine1 。Redmine 是一款开源的问题跟踪系统,它以管理项目内的任务和 Bug 的问题功能为中心,兼具服务于团队开发的功能,比如与 Wiki 和版本控制系统的联动等。
4.1.2 安装Redmine
现在我们来安装 Redmine。首先要安装的是 Web 服务器(Apache)和 Passenger(运行 Rails 应用所需的 Apache 模块)(LIST 4.1)。
LIST 4.1 安装 Apache
$ sudo apt-get install -y apache2 libapache2-mod-passenger
然后安装数据库 MySQL(LIST 4.2)。
LIST 4.2 安装 MySQL
$ sudo apt-get install -y mysql-server mysql-client
在安装 MySQL 的过程中,需要设置 MySQL 的 root 用户密码(图 4.1、图 4.2)。这个密码在随后安装 Redmine 时会用到。
图 4.1 MySQL 的密码设置
图 4.2 MySQL 的密码设置(确认)
接下来安装 Redmine(LIST 4.3)。
LIST 4.3 安装 Redmine
$ sudo apt-get install -y redmine redmine-mysql
安装过程中会显示数据库设置的相关界面,请选择“是”(图 4.3)。
图 4.3 数据库设置
下一步选择我们要使用的数据库。这里选刚才安装的 MySQL(图 4.4)。
图 4.4 选择数据库
输入 MySQL 数据库管理员的密码。这里输入刚刚安装 MySQL 时设置的密码(图 4.5)。
图 4.5 管理员密码输入界面
最后设置 Redmine 专用的 MySQL 应用密码。设置加上确认,密码总共要输入两遍(图 4.6、图 4.7)。
图 4.6 设置 MySQL 应用密码
图 4.7 确认 MySQL 应用密码
至此,Redmine 安装完毕。
4.1.3 Redmine 的设置
要想通过 Web 浏览器访问 Redmine,需要更改 Apache 的设置,所以接下来我们修改 Apache 的设置文件。LIST 4.4 中的设置将这个 Web 服务器设置成了 Redmine 专用。
LIST 4.4 修改 Apache 的设置文件
$ sudo vi /etc/apache2/sites-available/000-default.conf
替换 000-default.conf 的如下部分(LIST 4.5)。
LIST 4.5 000-default.conf 的修改
DocumentRoot /var/www/html ↓ DocumentRoot /usr/share/redmine/public
Redmine 需要一个名为 bundler 的工具,以管理 Gem 包,所以我们还需要安装 bundler(LIST 4.6)。
LIST 4.6 安装 bundler
$ sudo gem install bundler --no-rdoc --no-ri
为保证我们能通过 Apache 对 redmine 目录下执行写入操作,需要修改文件的所有权(LIST 4.7)。
LIST 4.7 变更文件的所有权
$ sudo chown -R www-data:www-data /usr/share/redmine
至此,所有设置结束,我们重新启动 Apache(LIST 4.8)。
LIST 4.8 重启 Apache
$ sudo service apache2 restart
如果要把 Redmine 安装在客 OS 上,然后通过本地环境(主 OS)的 Web 浏览器浏览界面,则必须设置端口转发。方法与附录 B.2 一样,需要在 VirtualBox 的端口转发设置中添加一行设置:主机端口(TCP)8000、子系统端口 80(图 4.8)。
图 4.8 VirtualBox 端口转发设置
现在各位可以打开浏览器访问 http://127.0.0.1:8000/ ,看看是否能显示出 Redmine 的界面。如果全部设置正确,各位应该会看到如图 4.9 所示界面。
图 4.9 Redmine 的初始界面
怎么样,看到 Redmine 的界面了吗?
在初始状态下,管理员只要在用户名和密码处都填入 admin 即可登录。请各位登录管理员用户,修改 Redmine 的各项设置。
4.1.4 插件
Redmine 有多种用来扩展功能的插件。下面我们挑几个比较好用的来了解一下。
◉ Redmine reStructuredText Formatter
Redmine reStructuredText Formatter2 用来将问题和 Wiki 的语法从标准 Textile 转换为 reStructuredText(reST)。
2 https://github.com/ebrahim/redmine_restructuredtext_formatter
具体使用哪种语法,我们可以按照团队的喜好来定。用 reST 描述的好处在于方便用 Sphinx 整理文章。我们将在第 7 章中学习 Sphinx 的相关内容。
◉ SCM Creator plugin
使用 SCM Creator plugin3 之后,我们就可以通过 Redmine 给项目创建版本库了。
3 http://www.redmine.org/plugins/redmine_scm
这个插件的安装和设置请参考 4.2 节。
◉ Slack chat plugin
导入 Slack chat plugin4 之后,Slack 聊天系统将能够接收 Redmine 中的问题更新通知。关于 Slack,我们将在 4.3 节进行了解。
4 https://github.com/sciyoshi/redmine-slack
◉ Issue Template plugin
使用 Issue Template plugin5 可以为每种问题分别设置模板,以便开发团队成员明白哪种问题该描述些什么。比如,我们给 Bug 问题设置了模板后,就可以有效防止漏记项目。
5 http://www.r-labs.org/projects/issue-template/
Issue Template plugin 的安装和使用方法请参考 5.2 节。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论