title: Trac安装和使用
date: 2017-12-14 15:19:21
tags:
在团队中使用Trac管理研发任务已两年左右,是时候总结一下使用体会了。
Trac 是一款Web应用形式的项目管理和缺陷&事务追踪系统,使用Python语言编写,开源并且免费使用。
想必你也听说过一些项目管理软件,比如禅道、TAPD或自研的类似系统等,它们实现的需求类似,主要目的是帮助团队管理开发任务,记录缺陷便于后续跟踪。
通常比较小的技术团队较少去使用到类似的管理软件,可能更多的是用Excel表格记录一下,甚至开发计划存在于脑海中,接到需求之后拿起键盘就是干,它们是决体会不到任务管理的好处的。
一直想在项目管理上流程化,希望有款软件能够解决这样的问题,最好这款软件是免费的,有评估过禅道,最终发现并不能很好的满足我们的要求。首先它的基本版本虽然免费,但是一些特别实用的功能是收费的,以插件的形式购买并安装,大家都知道领导是希望尽量使用开源(免费)的东西,说白了不愿掏钱(比较穷)。其实它的设计理论我还是比较认同的,敏捷开发的精髓在它上面均有体现,老实讲还挺不容易的,只是真正会使用的人太少了,因为使用的前提是掌握敏捷开发的理论,并且要去实践才能体会。
产品、研发和测试应该是三权分立的,三方都对需求负责,产品平时记录需求到需求池,依据内部的计划选定一些需求放到迭代计划中,并分配给技术部门。研发项目组拿到需求后拆解成开发任务,并为技术人员分配开发任务,研发工作结束后通知测试部门。测试部门前期在产品出发布计划时,已经对这些需求拆解了测试用例,此时按用例进行测试,确认研发的最终成果是否满足所有需求。如果有发现缺陷则记录在案,并及时分配给技术人员解决,最终完成所有缺陷后创建发布版本计划,进行下一阶段的软件发现作业。由此可见三个部门的工作在系统上均有提前,而且是环环相扣,可以追溯。
我是通过一位之前在雅虎中国待过的大神介绍而知晓Trac的,他当时在部门内推动使用Trac,我在使用过程中也存在一些疑惑,不过有大神在还好问题都得到及时的解决,最终我发现这确实是个好东西,所以在之后的工作中力推它。
在整个使用过程中遇到很多问题且是方方面面的,但最终都逐一解决了,下面罗列一些:
主要分成两个部分,一是Python环境的安装,二是Trac软件的安装及它的配置。
演示环境 centos7
# 建议使用yum直接安装,方便且快捷。
yum -y install python
# 如果不小心安装到Python3版本了,那可以去下载Python2的源码包安装。https://www.python.org/downloads/
# 解压下载的文件并进入其目录逐条执行下面的语句
./configure
make
make install
# 通过这个脚本能够自动帮我们安装好这两个软件,确保下载的get-pip.py有执行权限。
wget -c https://bootstrap.pypa.io/get-pip.py
python get-pip.py
# (备选方案)如果安装之后使用上有问题,就再安装一次,这次指定一下安装目录。
python get-pip.py --prefix=/usr/local/
pip install Genshi
# (备选方案)源码下载地址https://genshi.edgewall.org/wiki/Download
# sqlite3模块通常已经包含在Python中了,可以通过下面的方式检查一下,不报错即可为成功。
[root@localhost ~]# python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sqlite3
>>> quit()
pip install trac
# 下面两个也可以一并安装上
pip install trac psycopg2
pip install trac mysql-python
adduser trac
su - trac
trac-admin example_project initenv
# 输入项目的名称
# 回车默认使用sqlite数据库
# 稍等几秒可创建完
tracd --port 8000 /home/trac/example_project
http://[IP]:8000/example_project
# Trac已经支持国际化,可以安装中文语言包。
pip install Babel
# 我们需要为系统默认一位管理员,用来进行系统设置等操作。
cd example_project/conf/
htpasswd -c .htpasswd admin # 回车并输入admin用户的密码
# 将admin用户在Trac系统中的权限设置为最高
cd ../../
trac-admin example_project permission add admin TRAC_ADMIN
# 如果你想添加其它普通用户,可以在.htpasswd文件中追回新的用户。
htpasswd example_project/conf/.htpasswd zhangshan
# 为了让Trac采用我们创建的账号文件,在启动服务的时候要进行明确指定。
tracd --port 8000 --basic-auth="example_project,example_project/conf/.htpasswd,测试环境" example_project
软件已经安装完成,如何将它与自己的开发相结合呢?答案就是基于任务单的驱动,将任务单涵盖到整个开发过程中,不管是开发计划的制定,技术方案的设计及验证,以及具体的某个功能或需求点的开发。可以理解为不管做什么事情,都得先创建一个任务单,在单上有明确的所属项目名称、迭代版本号、任务的简要和详述以及任务的完成时间。
创建任务单非常简单,如果你已经按照上面中文化Trac之后,可以在导航栏上找到 新建任务单
,单击会打开新页面以填写任务单的信息。
谁创建任务单谁就是任务单的负责人,他应该关注任务的状态,自己创建的任务单不一定非要自己处理,可以指派给他人处理,也可以由他人自己领取。任务的所属人即是任务的执行者,负责实现任务所描述的内容。同时也可以二次指派给其他人处理,但报告人始终是同一个人,不可改变。
如果用户信息中有配置邮箱地址,并且启用了当任务单状态变更时通知功能,则任务单状态变更时会收到邮件提醒,当然还有一个前提那就是需要在Trac中配置邮箱信息,可以配置腾讯企业邮箱,当然公司内部邮箱也是可以的。
我们在任务单上除了创建时填写的描述信息,也可以为任务单添加评论,在这些评论中可以记录完成当前任务所做的所有故事,团队成员可以参与到任务单中讨论,相当于工作留痕,方便后面可逆源。
插件是一个为Trac增强功能的东西,可以让你在管理任务过程中得心应手,下面介绍几款插件:
更多的插件列表见官方插件中心 https://trac-hacks.org/wiki/HackIndex
python setup.py bdist_egg
并回车,在当前目录下生成了一个dist目录,复制此目录内的egg文件到example_project/plugins/下面,然后重启一下服务即可。我们在实践中尝试过不少插件,经过试用觉得以下还不错,可以供大家参考:
名称 | 版本 |
---|---|
BackLinksMacro | 7.0.dev0 |
BlackMagicTicketTweaks | 0.12.2 |
BreadCrumbsNav | 0.3dev-r0 |
cc-selector | 0.0.4 |
CodeExampleMacro | 1.2.post0 |
Color | r11892 |
DataSaverPlugin | 2.0.dev0 |
GroupTicketFields | 0.0.1dev-r0 |
NoteBox | 1.0.post0 |
PlantUML | 2.1.dev0 |
SimpleMultiProject | 0.5.2.dev0 |
TablePlugin | 0.2.post0 |
TicketCalendarPlugin | 0.12.0.2 |
TracAccountManager | 0.5.dev0 |
TracCodeReviewer | 1.0.0.dev0 |
TracCustomFieldAdmin | 0.2.12 |
TracDynamicFields | 2.2.0 |
TracExtractUrl | 0.3 |
TracHtmlNotificationPlugin | 0.12.0.1 |
TracMarkdownMacro | 0.11.4.post0 |
TracMermaid | 0.4.1 |
TracMindMapMacro | 1.2.0.dev0 |
TracNumberedHeadlinesPlugin | 0.4.post0 |
TracPermRedirect | 3.0 |
TracSectionEditPlugin | 1.2.0.dev0 |
TracTags | 0.9.dev0 |
TracTicketTemplate | 1.0.dev0 |
TracWikiExtras | 1.0.dev0 |
TracWorkflowAdmin | 0.12.0.3 |