部分内容原文地址:

码农教程:使用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

主要包含以下几个功能:

  1. 源码的review与审核
  2. 代码托管,代码浏览
  3. BUG跟踪
  4. 项目管理
  5. 团队成员交流
  6. 组织风险讨论
  7. 事件备注,以及回顾(统计等)
  8. 权限设置
  9. 其他功能

环境要求:

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一直处于发展状态,所以你应该经常更新它。如何更新:

  1. 停止webserver的运行
  2. 运行git拉取libphutil/,arcanist/,phabricator
  3. 运行phabricator/bin/storage upgrade
  4. 重新启动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 时的场景:

  1. 代码之前由 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 代码仓库再提交一次。

  1. 开始一个新的项目,创建一个新的仓库

    在 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的更多相关文章

  1. 你不知道的JavaScript--Item18 JScript的Bug与内存管理

    1.JScript的Bug IE的ECMAScript实现JScript严重混淆了命名函数表达式,搞得现很多人都出来反对命名函数表达式,而且即便是现在还一直在用的一版(IE8中使用的5.8版)仍然存在 ...

  2. 关于vue项目管理项目的架构管理平台

    关于vue项目管理项目的架构管理平台 https://panjiachen.github.io/vue-element-admin-site/#/zh-cn/faq 31.4k 次浏览 完整项目地址: ...

  3. 深圳共创力“研发管理&知识管理”高端研讨交流会在深圳举办!

    2017/4/8,由深圳市共创力企业管理咨询公司举办的“研发管理&知识管理”高端研讨会在深圳市南山区圣淘沙国际酒店(翡翠店)隆重召开.此次研讨会由共创力总经理.首席顾问杨学明先生主持.研讨会先 ...

  4. 使用SharePoint管理中心管理服务

    使用SharePoint管理中心管理服务 为了管理服务应用程序.场管理员要么使用管理中心,要么使用PowerShell. 管理服务应用程序页面列出了场上执行的服务.你能够管理他们. 很多服务都有自己的 ...

  5. Linux学习之RPM包管理-yum管理(十七)

    Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...

  6. Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理

    Atitit 管理的模式扁平化管理  金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理 1.1. 矩阵管理 1 1.2. 相关信息 矩阵的历史 1 1.3. 基于“ ...

  7. OS之内存管理 --- 虚拟内存管理(二)

    关于虚拟内存管理之前的请看:OS之内存管理 - 虚拟内存管理(一) 帧分配 每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的.所以在这之间,对于进程的帧的分配 ...

  8. Linux_用户管理&权限管理

    2017年1月11日, 星期三 Linux_用户管理&权限管理 1.  Linux用户管理&权限管理 终端的概念: tty  查看登录的终端 类型  user group    oth ...

  9. Odoo文档管理/知识管理应用实践 - 上传附件

    测试环境: Odoo8.0 Odoo中的文档管理/知识管理可用于保存采购.销售.生产等一系列业务流程中产生的文件.凭证,可关联到具体的每一笔业务操作:也能用于管理公司的合同.资料,创建知识库以分享内部 ...

随机推荐

  1. Oracle-序列-存储过程-视图-索引-触发器

    课程介绍 1. 约束(掌握) 2. 序列(掌握) 3. 索引(掌握) 4. 视图(掌握) 5. 存储过程(掌握) 6. 自定义函数(掌握) 7. 触发器(掌握) 数据库对象的命名规则 1.对象名称必须 ...

  2. sql操作数据库(2)--->DQL、数据库备份和还原

    查询 查询表中的所有的行和列的数据 ​ select * from 表名; ​ select * from student; 查询指定列的数据:如果有多个列,中间用逗号隔开. select 列名1,列 ...

  3. JAVA静态代理和动态代理理解

    代理 代理是英文 Proxy 翻译过来的.我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了. 她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人. 按理说,顾客可以直接从厂家购买产品,但 ...

  4. python数据基本运算处理===循环

    一.循环语句 1.while while的循环条件为True,即每次正常循环完毕都会返回判断一次条件 只有读到break才能立刻彻底结束循环,break只能结束本层循环 continue也能立即结束本 ...

  5. idea启动build过慢

    原文链接http://zhhll.icu/2020/04/17/idea/idea%E4%B9%8B%E7%BC%96%E8%AF%91%E9%97%AE%E9%A2%98/ 之前使用idea的时候每 ...

  6. linux安装ftp步骤

    1,查看是否安装了FTP:rpm -qa |grep vsftpd 2,如果没有安装,可以使用如下命令直接安装 yum -y install vsftpd 默认安装目录:/etc/vsftpd 3,添 ...

  7. Syn_Flood攻击&防御手段

    Syn_Flood攻击原理 攻击者首先伪造地址对服务器发起SYN请求(我可以建立连接吗?),服务器就会回应一个ACK+SYN(可以+请确认).而真实的IP会认为,我没有发送请求,不作回应.服务器没有收 ...

  8. ssh升级以及ssh: symbol lookup error: ssh: undefined symbol: EVP_aes_128_ctr错误处理

    1.解压安装openssl包:(不能卸载openssl,否则会影响系统的ssl加密库文件,除非你可以做两个软连接libcryto和libssl) # tar -zxvf openssl-1.0.1.t ...

  9. C中的dll 、lib和exe文件

    参考:链接1   链接2 DLL 动态链接库(Dynamic Link Library,缩写为DLL),运行时加载是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源.动态链接 ...

  10. If you see someone without smile

    If you see someone without smile, give them one of yours. 难怪我每次和不认识的人说话都放肆大笑.