部分内容原文地址:

码农教程:使用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. 循序渐进VUE+Element 前端应用开发(30)--- ABP后端和Vue+Element前端结合的分页排序处理

    在很多列表展示数据的场合中,大多数都会需要一个排序的处理,以方便快速查找排序所需的数据,本篇随笔介绍如何结合ABP后端和Vue+Element前端结合的分页排序处理过程. 1.Vue+Element前 ...

  2. Java学习日报7.27

    笔记

  3. informix部署安装

    informix部署安装 一.环境准备 Linux版本:centos7.6 Linux主机名:localhost informix安装包:ibm.ids.14.10.FC4W1.LNX.tar inf ...

  4. win8.1默认输入法设置

    1.右击左下角,选择控制面板 2.选择更改输入法 3.选择高级设置 4.在替代默认输入法,从下拉列表中选择自己已安装的输入法,比如搜狗拼音输入法,qq拼音输入法等其他输入法

  5. 第8章 控制对象的访问(setter、getter、proxy)

    目录 1. 使用getter和setter控制属性访问 1.1 定义getter与setter 通过对象字面量定义,或在ES6的class中定义 通过使用内置的Object.definePropert ...

  6. Termux键盘配置

    通过编辑~/.termux/termux.properties配置 extra-keys = [\ ['ESC', 'CTRL', '&', '$', '!', '%', '<', '& ...

  7. 废弃fastjson!大型项目迁移Gson保姆级攻略

    前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀. 在被大家取关之前,我立下一个"远大的理想",一定要在这周更新文章.现在看来,flag有用了... 本篇文章是我这一个多月 ...

  8. 【MyBatis】MyBatis 延迟加载策略

    MyBatis 延迟加载策略 文章源码 什么是延迟加载 延迟加载,就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据,也被成为懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提 ...

  9. JVM 源码分析(四):深入理解 park / unpark

    前言 Parker 源码调试与分析 park/unpark 原理总结 补充:jstack 命令和 kill 命令 前言 熟悉 Java 并发包的人一定对 LockSupport 的 park/unpa ...

  10. LAN-SHARE 使用教程

    Description: 我的个人项目 LAN-Share 的使用教程:局域网内文件分享工具 LAN-Share 是一个基于 Node.js 的用于局域网内文件分享的工具,易于配置与部署. 项目地址: ...