项目管理/Bug管理/问题管理—Phabricator
项目管理/Bug管理/问题管理—Phabricator
部分内容原文地址:
码农教程:使用Docker安装phabricator的配置和使用方法
安静de沉淀:Phabricator(代码review)服务器安装部署
简书:zhangweiheb:使用Phabricator做为Code Review工具
1.项目管理/Bug管理/问题管理工具
Phabricator:用 PHP 开发的,facebook 之前的内部工具,开发这工具的哥们离职后自己搞了一个公司专门做这个软件,集成了代码托管, Code Review,任务管理,文档管理,问题跟踪等功能,强烈推荐较敏捷的团队使用;
Jira:用 Java 开发的,有用户故事,task 拆分,燃尽图等等,可以做项目管理,也可以应用于跨部门沟通场景,较强大;
禅道:开源的敏捷开发工具,包含各类敏捷开发,燃尽图,Bug管理,需求管理,产品管理等功能。
2.Phabricator
Phabricator是针对git项目的code-review工具,还可以跟踪bug、记录需求、WIKI编写等。
官网:https://www.phacility.com/
项目地址:https://github.com/phacility/phabricator
主要包含以下几个功能:
- 源码的review与审核
- 代码托管,代码浏览
- BUG跟踪
- 项目管理
- 团队成员交流
- 组织风险讨论
- 事件备注,以及回顾(统计等)
- 权限设置
- 其他功能
环境要求:
LNMP(Linux,Nginx,MySQL,PHP)。
3.Docker 方式安装Phabricator
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.Phabricator配置
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.Phabricator使用
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 查看。
5.2 与Jenkins集成
项目管理/Bug管理/问题管理—Phabricator的更多相关文章
- 你不知道的JavaScript--Item18 JScript的Bug与内存管理
1.JScript的Bug IE的ECMAScript实现JScript严重混淆了命名函数表达式,搞得现很多人都出来反对命名函数表达式,而且即便是现在还一直在用的一版(IE8中使用的5.8版)仍然存在 ...
- 关于vue项目管理项目的架构管理平台
关于vue项目管理项目的架构管理平台 https://panjiachen.github.io/vue-element-admin-site/#/zh-cn/faq 31.4k 次浏览 完整项目地址: ...
- 深圳共创力“研发管理&知识管理”高端研讨交流会在深圳举办!
2017/4/8,由深圳市共创力企业管理咨询公司举办的“研发管理&知识管理”高端研讨会在深圳市南山区圣淘沙国际酒店(翡翠店)隆重召开.此次研讨会由共创力总经理.首席顾问杨学明先生主持.研讨会先 ...
- 使用SharePoint管理中心管理服务
使用SharePoint管理中心管理服务 为了管理服务应用程序.场管理员要么使用管理中心,要么使用PowerShell. 管理服务应用程序页面列出了场上执行的服务.你能够管理他们. 很多服务都有自己的 ...
- Linux学习之RPM包管理-yum管理(十七)
Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...
- Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理 1.1. 矩阵管理 1 1.2. 相关信息 矩阵的历史 1 1.3. 基于“ ...
- OS之内存管理 --- 虚拟内存管理(二)
关于虚拟内存管理之前的请看:OS之内存管理 - 虚拟内存管理(一) 帧分配 每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的.所以在这之间,对于进程的帧的分配 ...
- Linux_用户管理&权限管理
2017年1月11日, 星期三 Linux_用户管理&权限管理 1. Linux用户管理&权限管理 终端的概念: tty 查看登录的终端 类型 user group oth ...
- Odoo文档管理/知识管理应用实践 - 上传附件
测试环境: Odoo8.0 Odoo中的文档管理/知识管理可用于保存采购.销售.生产等一系列业务流程中产生的文件.凭证,可关联到具体的每一笔业务操作:也能用于管理公司的合同.资料,创建知识库以分享内部 ...
随机推荐
- 这一次,彻底理解XSS攻击
希望读完本文大家彻底理解XSS攻击,如果读完本文还不清楚,我请你吃饭慢慢告诉你~ 话不多说,我们进入正题. 一.简述 跨站脚本(Cross-site scripting,简称为:CSS, 但这会与层叠 ...
- ubuntu虚拟机启用双网卡IP配置
首先要登入自己的虚拟机,这里以ubuntu为例. 配置两块网卡,一块eth0为NAT模式,另一块为eth1仅主机模式 # 进入网卡配置页面vi /etc/network/interfaces # Th ...
- lua脚本简介
Lua [1] 是一个小巧的脚本语言.它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ier ...
- synchronized关键字jvm实现及各种锁
一.synchronized的字节码执行过程 在java语言中存在两种内建的synchronized语法:1.synchronized语句:2.synchronized方法. 对于synchroniz ...
- 基于E-PUCK 2.0多智能体自主协同 高频投影定位系统
群体智能机器人是一种国际前沿的人工智能研究项目,由多个小型机器人组成的集群式解决系统,灵感源于蚂蚁.蜜蜂.鱼等群体生物,在没有统一领导的情况下,也能合作执行大量复杂的任务,比如组建一个图形,再在此基础 ...
- MySQL中in('5,6,7')只取第一个id为5对应的数据的思考
通过阅读本文你可以更好的理解两个知识点: 1.#{}与${}在实际项目中的使用,避免在项目中使用不当造成不可预知的Bug; 2.MySQL中in里面如果是字符串的话,为什么只取第一个对应的数据,eg: ...
- Python作业---内置数据类型
实验2 内置数据类型 实验性质:验证性 一.实验目的 1.掌握内置函数.列表.切片.元组的基本操作: 2.掌握字典.集合和列表表达式的基本操作. 二.实验预备知识 1.掌握Python内置函数的基/本 ...
- python模块详解 | progressbar
参考官方文档:https://pypi.org/project/progressbar/#description progressbar 安装: pip install progressbar pro ...
- leetcode 93. Restore IP Addresses(DFS, 模拟)
题目链接 leetcode 93. Restore IP Addresses 题意 给定一段序列,判断可能组成ip数的所有可能集合 思路 可以采用模拟或者DFS的想法,把总的ip数分成四段,每段判断是 ...
- 1V升3V芯片,1V升3.3V芯片,大电流的,低功耗
一般来说,1V的电压实在很低了,即使是干电池的话,再1V时,也是基本属于没电状态了.还有一种是干电池输出电流大时,也会把干电池的电压从1.5V拉低到1V左右. 更多的是客户对于1V时要能升到3V或者3 ...