项目管理/Bug管理/问题管理—Phabricator
部分内容原文地址:
码农教程:使用Docker安装phabricator的配置和使用方法
安静de沉淀:Phabricator(代码review)服务器安装部署
简书:zhangweiheb:使用Phabricator做为Code Review工具
1.项目管理/Bug管理/问题管理工具
Phabricator:用 PHP 开发的,facebook 之前的内部工具,开发这工具的哥们离职后自己搞了一个公司专门做这个软件,集成了代码托管, Code Review,任务管理,文档管理,问题跟踪等功能,强烈推荐较敏捷的团队使用;
Jira:用 Java 开发的,有用户故事,task 拆分,燃尽图等等,可以做项目管理,也可以应用于跨部门沟通场景,较强大;
禅道:开源的敏捷开发工具,包含各类敏捷开发,燃尽图,Bug管理,需求管理,产品管理等功能。
2.PhabricatorPhabricator是针对git项目的code-review工具,还可以跟踪bug、记录需求、WIKI编写等。
官网:https://www.phacility.com/
项目地址:https://github.com/phacility/phabricator
主要包含以下几个功能:
- 源码的review与审核
- 代码托管,代码浏览
- BUG跟踪
- 项目管理
- 团队成员交流
- 组织风险讨论
- 事件备注,以及回顾(统计等)
- 权限设置
- 其他功能
环境要求:
LNMP(Linux,Nginx,MySQL,PHP)。
3.1Docker方式安装Mysql数据库
直接一条命令:
docker run -p 3307:3306 --name mysql-3307 -v /logs/mysql/conf:/etc/mysql/conf.d -v /logs/mysql/logs:/logs -v /logs/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
查看mysql容器的IP地址:
docker inspect <contained id> | grep IPAddress
3.2Docker方式安装Phabricator
一条命令拉取安装:
docker run --name phabricator -p 443:443 -p 332:22 -p 8891:80 -v /root/phabricator/backup:/repos -e MYSQL_HOST=172.17.0.2 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e PHABRICATOR_REPOSITORY_PATH=/repos -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -it redpointgames/phabricator /bin/bash /app/init.sh
如果需要设置外网地址,则使用如下命令:
docker run --name phabricator -p 443:443 -p 332:22 -p 8891:80 -v /root/phabricator/backup:/repos -e PHABRICATOR_HOST=xxxxxx:8891 -e MYSQL_HOST=172.17.0.2 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e PHABRICATOR_REPOSITORY_PATH=/repos -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -it redpointgames/phabricator /bin/bash /app/init.sh
其中xxxx为你服务器的外网ip,这个就可以通过http://xxxxx:8891来访问你服务器上docker部署的phabricator了。不过记得开启安全组。
安装完成后,我们就可以通过外网ip
加端口号8891来访问了。
4.1 配置管理员
第一次进入时,看到如上图界面,配置系统管理员。
如果你第一次访问不是这个界面, 我们也可以在控制台通过命令 的方式添加用户。
进入容器
cd /srv/phabricator/phabricator
./bin/accountadmin
如果你的管理员用户退出来了,提示下面的信息了.
This Phabricator install is not configured with any enabled authentication providers which can be used to log in. If you have accidentally locked yourself out by disabling all providers, you can use phabricator/bin/auth recover <username> to recover access to an administrative account.
运行命令
cd /srv/phabricator/phabricator
./bin/auth recover luanpeng(在网页中创建的管理员账号)
提示通过一个网页进入。
Use this link to recover access to the "luanpeng" account from the web interface:
http://xxxxxx:8891/login/once/recover/1/xxxxxxxxxx/
After logging in, you can use the "Auth" application to add or restore authentication providers and allow normal logins to succeed.
根据提示进行操作
在主页左侧栏选择Auth。
允许用户登录注册。
4.2 Phabricator中文汉化
进入phabricator/src/extensions/目录下,rm -fr README,再执行下面git命令,然后在客户端设置里,选择语言中文即可.
git clone https://github.com/wanthings/phabricator-zh_CN.git ./
Phabricator更新
由于Phabricator一直处于发展状态,所以你应该经常更新它。如何更新:
- 停止webserver的运行
- 运行git拉取libphutil/,arcanist/,phabricator
- 运行phabricator/bin/storage upgrade
- 重新启动webserver
5.1 Phabricator进行Code Review
5.1.1Phabricator Code Review工作流
Phabricator提供两种Code Review的方式:pre-push,post-push。
pre-push 是指审查发生在变更发布前;post-push 是指审查发生在变更已经被发布或者正在发布。
pre-push 的工作流:
Write, Review, Merge, Publish
5.1.2进行Code Review所用工具
常用的工具有两个 Differential 和 Arcanist 。
Differential-审查代码的工作台
在这里查看变更审查情况,对变更进行审查或评论等操作。
这是某次变更界面操作部分截图。
<p>做为 审查人,可进行的操作有:
Comment:说点什么。可以针对某行代码进行评论,直接点击行号即可
Accept Revision:接受变更,这哥们代码写得不错,不需要改
Request Changes:不行,还要改
Resign as Reviewer:重新指定审查代码的人
Commandeer Revision:字面意思是将这个Revision据为己有的意思,实际上这个时候Reviewer的身份已经变为Owner的身份了,不能再进行Review了,但是Comment还是可以的
Add Reviewer:添加审查人
Add Subscribers:添加订阅者,CC
做为 作者,可进行的操作有:
Comment:说点什么。可以针对某行代码进行评论,直接点击行号即可
Abandon Revision:废除版本。废除后,这个版本就不需要再审核了
Plan Changes:计划变更,我自己发现了一些问题或者需求有变,正在改
Add Reviewer:添加其它审查人(除当前审查人外)
Add Subscribers:添加订阅者,CC
Arcanist - 命令交互
我们用这个工具提交变更和审查请求,对变更做出更改,或者在通过审查后发布到远程仓库分支中。
常用的命令有:
- arc diff:发送变更详情和审查请求
- arc land:推送变更(Git and Mercurial),当通过审查后使用这个命令
- arc list:显示变更处理的情况
- arc cover:查找最有可能审查变更的人
- arc patch:给版本打补丁
- arc export:从Differential下载补丁
- arc amend:更新Git commit
- arc commit:提交变更(SVN)
- arc branch:查看Git branches更加详细的信息
在配置了 lint 和 unit test intergration后,可以用这些命令:
- arc lint:静态代码检查
- arc unit:单元测试
与其它工具交互:
- arc upload:上传文件
- arc download:下载文件
- arc paste:创建和查看剪贴
5.1.3 配置进行Code Review
一些基本的配置和安装 —> 写代码 —> 提交审查请求(arc diff) —> 审查(Differential) —> (审查通过后)合并提交(arc land)
5.1.4 基本的配置和安装
包括:
- 配置代码仓库(Diffusion)
- 把你本地的Git远程URL设置为Phabricator上代码仓库地址
- 安装Arcanist
- 配置Project信息
配置代码仓库(Diffusion)
在开始进行代码审查后,我们的代码是由Phabricator直接托管的,所以我们需要配置代码仓库。
使用管理员账号登录Phabricator,点击左侧面板菜单 Diffusion ,然后点击右上侧 Create Repository ,选择你所使用的 Repository 类型,填写 Name 等信息,在创建完成后即可使用。如果没有什么特殊的需求,不需要进行特别的配置,这里列举两种你可能遇到的打算开始使用 Phabricator 时的场景:
-
代码之前由 GitHub 或其它托管,现在我需要把之前的代码导入
点击 Manage Repository ,点击左侧 URIs,点击 Add New URI,填写GitHub或其它托管系统对应仓库的 URI , I/O Type 选择 Observe,点击 Create Repository URI 添加新的 URI 。
在添加完新的 URI 后,你还需要点击 Set Credential 设置访问新的 URI 的认证方式。
如果你打算此时就开始使用 Phabricator ,请务必通知你的团队,暂停一下,不要再向GitHub等提交代码。如果你的 GitHub 等也设置了代码审查,请督促相关人员完成代码审查流程。
稍等片刻,待 Phabricator 同步完之前的代码后,编辑你添加的 GitHub 或其它代码托管系统的 URI ,务必修改 I/O Type:
1)如果你不再需要使用之前的托管系统,选择 No I/O
2)如果你想继续把代码备份到之前的代码托管系统,选择 Mirror,这时, Phabricator 代码仓库的变更会覆盖推送到之前的代码托管系统
如果你不修改 I/O Type,向 Phabricator 代码仓库提交代码会失败,因为是只读的。
当然,对于导入之前的代码,还有别的方式,例如直接把本地的代码再次向 Phabricator 代码仓库再提交一次。
-
开始一个新的项目,创建一个新的仓库
在 Phabricator 创建代码仓库。如果你希望把代码备份到其它的托管系统,只需要添加对应的 URI,并且把 I/O Type 选为 Mirror。
把你本地的Git远程URL设置为Phabricator上代码仓库地址。
git remote set-url 远程名称 新的url
安装Arcanist:
https://links.jianshu.com/go?to=https%3A%2F%2Fsecure.phabricator.com%2Fbook%2Fphabricator%2Farticle%2Farcanist_quick_start%2F
配置Project信息,在你项目代码的根目录下,创建 .arcconfig 文件,内容如下:
{
"phabricator.uri" : "你Phabricator系统访问URL"
}
写代码:
提交审查请求(arc diff):
一般情况下,我们直接使用 arc diff 即可,默认情况下,Arcanist 会把本地分支的 HEAD 与远程对应分支的 HEAD 进行对比,并生成差异对比发送到 Phabricator。当你所做的修改没有 commit 时,会提示你进行 commit。
在一些情况下,我们并不希望与本地分支的 HEAD 进行比较,假设想要与上次的 commit 比较,上次 commit id 是 8ffc88dc05d31fffd28e3ff1129d1b8c321dffff,那么我们需要在 arc diff 后把这个 id 加上:arc diff 8ffc88dc05d31fffd28e3ff1129d1b8c321dffff。
执行这条命令时我们需要按照模板填写title(必填),summary(必填),Test Plan(必填,没有可写 N/A 之类的标识),Reviewers(必填,且必须为真实有效的用户名),Subscribers(可选),填写完成后关闭编辑器,Arcanist会自动提交审查请求。
审查(Differential)
做为 审查人,需要在 Differential 工作台完成代码审查工作,上面已经介绍了 Differential,这里就不再多说了。
(审查通过后)合并提交(arc land)
做为 作者,在代码审查通过后,需要使用 arc land 把变更发布到远程分支。
注意,在首次执行这条命令前(不一定非要到这个步骤,可以是这个步骤前的任意时刻,例如开始写代码前),建议请使用 git branch -u 远程名称/远程分支名称 把本地的分支与远程分支相关联,否则,在执行完 arc land 后,本地分支会被删除。如果你不想这样做,又需要保留现在分支的话,请使用 arc land --keep-branch。
默认情况下,Arcanist 会把变更推送到与本地分支相关联的远程分支,你可以使用 * --remote * 和 * --onto * 参数推送到你想要的远程和远程分支。
关于 arc land 的详细说明,可使用 arc land --help 查看。