Phabricator入门手册

huangweibing 发布于 2013/09/12 21:23
阅读 33K+
收藏 26

本手册概述

Phabricator是Facebook开源的一个可视化的代码审查工具。

安装篇:使用ubuntu的安装脚本安装。

配置篇:配置Apache。

使用篇:审核svn中提交的代码。

安装篇

安装环境

一台新装的ubuntu 12的机器。随机软件都是默认的,mysql,php等都没有安装。使用Phabricator提供的安装脚本安装。如果你不使用安装脚本,则本安装步骤不适合你。可以在安装后参考配置篇进行配置。

安装步骤

参照Phabricator官网(http://www.phabricator.com)的安装向导,网址http://www.phabricator.com/docs/phabricator/article/Installation_Guide.html下载ubuntu的安装脚本install_ubuntu.sh

安装脚本install_ubuntu.sh拷贝到安装Phabricator的目录,比如/usr/program/下(program目录是我自己建的)。

运行install_ubuntu.sh。如果当前用户没有权限,则加上sudo或者切换到root用户下。安装过程中会要求输入mysql root用户的密码,后面配置数据库时要用到。不出意外的话,安装就成功了。

其它可选安装

APC,XHProf都没有安装。

配置篇

配置Apache

默认安装下Apache是安装在/etc/apache2/下。根据官方向导,内容在http://www.phabricator.com/docs/phabricator/article/Configuration_Guide.html下。修改/etc/apache2/sites-enabled/000-default的内容。实际修改是把如下内容加入到000-default里。

  # Change this to the domain which points to your host.

  ServerName phabricator.example.com

 

  # Change this to the path where you put 'phabricator' when you checked it

  # out from GitHub when following the Installation Guide.

  #

  # Make sure you include "/webroot" at the end!

  DocumentRoot /path/to/phabricator/webroot

 

  RewriteEngine on

  RewriteRule ^/rsrc/(.*)     -                       [L,QSA]

  RewriteRule ^/favicon.ico   -                       [L,QSA]

  RewriteRule ^(.*)$          /index.php?__path__=$1  [B,L,QSA]

 

<Directory /path/to/phabricator/webroot>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

修改配置后,重启Apache。重启命令是/etc/init.d/apache2 restart(或者service apache2 restart。如果域名是随意写的,不要忘记在/etc/hosts下加入一条域名解析的记录。比如你的ubuntu机器的ip是192.168.1.8,则记录如下:

192.168.1.8   phabricator.example.com

配置好Apache后,再来配置一下Mysql切换到phabricator/bin/目录下./storage upgradephabricator的相关schema初始化到数据库中。

至此,可以通过浏览器来访问Phabricator了。千万别通过localhost或ip来访问,将会得到一个错误。通过上面配置的域名来访问,比如phabricator.example.com。将会看到Phabricator登录页,用户名密码是什么呢?别急,通过Phabricator的命令行工具来创建一个。

 

图1:Phabricator的登录页面

配置administor用户

切换到phabricator/bin/目录下,通过./accountadmin命令,按照指示一步步操作创建一个administor角色的账号。后面会介绍一下administor,agent角色的区别。有了账号,密码就可以登录phabricator了。

使用篇

新安装好的phabricator,登录后一般会看到5个问题提示。按照提示有的在页面上就能解决,有的需要到命令行解决。总的来说都不难,其中一个不好解决的,直接忽略掉。

配置数据库

(有些记不清楚当时的操作)

切换到phabricator/bin/目录下./config set mysql.pass xxxx为Phabricator设置Mysql的密码,其他如mysql.host,mysql.port,mysql.user使用默认,不用设置。

配置邮件

(参考:http://blog.csdn.net/wiowei/article/details/8675383)

切换到phabricator/bin/目录下运行daemon:./bin/phd start。

配置mail:通过web访问phabricator并在页面上进行配置:(这里使用的是外部SMTP server的方式,更多方式参见phabricator docs)

用administrator账号登录后,在administration栏选择Config进入

1)选择mail,设置:

metamta.default-address  -- xxxx@163.com   // 注意:这里必须要用与smtp服务器对应的邮箱地址,不然邮件发不出去

metamta.domain -- phabricator.myproject.com // 随意

metamta.mail-adapter: set to "PhabricatorMailImplementationPHPMailerAdapter"

metamta.send-immediately: Send Via Daemons

2)选择PHPMailer,设置:(以163.com的SMTP server为例)

phpmailer.mailer: set to "smtp".

phpmailer.smtp-host: smtp.163.com 

phpmailer.smtp-port: 25

phpmailer.smtp-user: xxxx

phpmailer.smtp-password: xxxx

配置完毕后,可以在Administration-MetaMTA下进行发送邮件的测试,注意需要添加一个User组用户,无法直接向System Agent组用户发送邮件。(^_^:没有找到Administration-MetaMTA在哪)。不过可以通过bin下的命令来查看Inbound Email和outbound Email的情况。

如果邮件配置的是SSL协议,端口是465,则需要开启相应端口。我开始配置的SSL没有成功,换回25端口,邮件就能发送了。如果发送没有成功,通过页面上的Daemons的console日志来查找原因。


图2:访问入口

Repositories

添加代码库:Administration内选择Repositories,点击Create New Repository,可选择Git或SubVersion类型的代码库,Name是库名称,Callsign用于作为所有revision commit的前缀使用,一般用短小的全大写。

创建完毕后,在tracking内配置跟踪参数,填写remote url(代码库地址),配置代码库在服务器上保存的路径local path:比如/home/username/git,然后再根据情况填写用户名,密码一般就可以了。保存后,phabricator后台会自动tracking代码库的更改情况。

我个人配置的是svn,配置信息如下图3所示:

图3:svn的配置

图中红色框中的内容是需要填写的。其中Repository Root 和 UUID,是通过svn info得到的。

Diffusion

配置Repositories后,在Diffusion页面能看到Repositories的信息。如下图4所示:

 

图4:Diffusion页Repositories的信息

如果看到Subversion后为--,先不要着急。第一,确认Daemon是运行中的;第二,在ubuntu命令行下,试试svn命令是否可用;第三,在ubuntu下切换到Phabricator安装目录下:执行./scripts/repository/test_connection.php BIZ,BIZ是Callsign(在创建Repository时填写的);如果前三步都没有问题,第四步就是,出去溜达一下,放松放松。因为Phabricator的Daemon程序需要时间来从你的svn库中获取相应的数据。

如果Diffusion页Repositories的信息有了,点击进去将能看到如下图5所示的commit信息。

 

图5:svn commit信息

Organization介绍

 

配置过Diffusion后,发现其它的功能还是空空的。想玩转Phbricator可不是这么容易的。哥也是被整的心情低落,几度想放弃。后来是,到现在还有好多不明白的地方,有看到的高人请指点。

Pepole介绍

新建用户,只能建Normal User和System Agent角色的用户。在系统能发邮件条件下,用户会收到一封邀请邮件。

 

图7:创建用户

用户角色分类

根据官方分类有Administrator,System Agents,Disabled Users,还有一个是Normal Users(文档上没有列出)。他们的区别是如下:

角色

权利

Administor

Account Management: The primary function of administrators is adding, disabling, and managing user accounts. Administrators can create and edit accounts and view access logs.

MetaMTA: Administrators can send test email via MetaMTA. This isn't available to normal users to prevent Phabricator from serving as a partially open relay if used by open source projects.

Repositories: Administrators can configure repositories. This isn't normally available because it is specialized and complicated to configure.

Administor角色也不是万能的,它也有一些功能不具备:Administrators are not in complete control of the system. Administrators can not login as other users or act on behalf of other users. Administrators can not bypass object privacy policies.

System Agents

can not login(they can access API methods via Conduit);

can not review diffs or own tasks;

do not appear in CC tokenzers.

   为脚本和bots而建的角色

Normal Users

这是用的最多的角色,具有Administor不具有的能力。许多需要输入用户名的地方就能发现,Administor的用户不在范围之内。

Disabled Users

can not login;

can not access Conduit;

do not receive email;

do not appear in owner/reviewer/CC tokenizers.

Projects

(实话:我没有用起来,但感觉应该是管理项目的出发点)

输入名称和简介创建项目。创建后的项目,如图8所示。主要是作为管理Task的一个纬度。在没有Taks的情况下,说不上有什么功能。

 

图8:项目页

Oweners(用作创建包)

使用Phabricator也不是非要建包,这是对svn资料的一个所有权的管理。方便后面Audit规则的建立。

创建包,需要的注意事项如图9所示。这儿的Owner不能是具有Administor角色的用户(不知道为什么有这种限制)。在选择Path时,需要一个Subpath为空的Repository(使用中发现的)。

 

图9:创建包

 

Herlad(用作创建规则)

Audit中的数据来源之一通过规则触发。下面来看一下怎样创建规则。规则分公共的和私有的两类。公共的会影响所有人,所有人也都能编辑。私有的只影响创建者。规则创建页面如图10所示。规则设计相当的灵活,我也只简单的用用。规则创建包括两部分,一部分是条件的设计,可以有多个条件组合使用;另一部分是触发的动作,可以是发邮件或者是Audit。

 

图10:创建规则

 

 

Audit

规则创建好后,Audit功能也就能用上了。当有规则被触发,Audit的右边会有数字显示当前有多少提交(commit)需要Audit。Audit中的操作是对commit进行审核。当选择Accept Commit动作保存后,这条commit记录就从Audit中消除。其他动作,可自行试试。

 

图11:提交Audit

触发Audit的另一种方法是要svn提交时在备注中加入Auditors:xxx。xxx为Phabricator系统中用户名。

Maniphest(用作创建任务)

在项目开发或者审核过程中,当有任务或者Bug需要指派时,可以在Maniphest创建。由于项目的管理及Bug都是提交到JIRA上,这功能用的也不多。

Differential(代码审查)

Differential是相对Audit的,都可以审查代码,一个是提交到svn之前,一个是提交到svn之后。Differential可以做到对代码的每一行进行备注(功能上强于Audit)。由于需要对提交到svn之前的代码进行审查,需要借助其他工具来生成Diff。官方推荐是使用Arcanist,在ubuntu环境中是随Phabricator一起安装的。但要想在Windows环境中使用,官方说法是有点小麻烦。我也没有尝试,主要是想到试过后,如果使用麻烦,在项目内部推广也会受阻。(这都是借口,主要还是被Phabricator折磨的有点怕了,过些时间这点恐惧心理没了再试试)

虽然Arcanist没用过,通过页面也是可以创建Diff。按Phabricator的说法you can also just paste a diff (for example, from svn diff, git diff or hg diff) into this box, or upload a diff file.什么是diff file?是一种版本比较后的差异文件。如下内容所示是svn的一个diff file。

Index: pom.xml

===================================================================

--- pom.xml     (revision 6577)

+++ pom.xml     (revision 6485)

@@ -4,7 +4,7 @@

 

        <groupId>inno-fw</groupId>

        <artifactId>inno-fw-biz</artifactId>

-       <version>0.0.5-SNAPSHOT</version>

+       <version>0.0.4-SNAPSHOT</version>

 

        <name>inno-fw-biz</name>

        <url>http://maven.apache.org</url>

创建好Diff页面如图12所示。

 

图12:Diff页

其它的用法,也没有使用过。总是觉得没有用到Phabricator的核心功能,没有用到它的精粹。

 

交流功能介绍

功能

用途

备注

Phriction

类似于Wiki,可以记录一些信息。就当作是一个可以记笔记的地方吧。

 

Diviner

文档(页面上看,没发现任何功能)

 

Conpherence

可以多人发关消息,也可以以邮件通知对方。需要手工刷新。

 

Feed

订阅(感觉就是一个查询各个人操作内容的地方)

 

 

其它非主要功能,本手册就不介绍了。有资料的请分享给我哦。

总结:

本手册还只是入门手册,没有讲到phabricator的精髓。限于作者本人水平及在项目中还没有执行起来,所以难示体会到其中的强大。代码审查的目的是提高代码质量,促进团队成员的编码水平,所以在使用本工具中不要忘记本质,而流于形式。

联系方式:langren_qing@163.com

加载中
0
gaolongquan
gaolongquan
顶贴需要10个积分,顶不起,给个好评~
0
豪仔
豪仔
看起来很不错。试试看。
0
Movoin
Movoin

我总是会提示: ./bin/storage: line 1: ../scripts/sql/manage_storage.php: No such file or directory

请问如何解决?

0
小点点
小点点

请教一下   ./bin/auth recover admin 的时候  报错  “This account ("admin") can not establish web sessions, so it is not possible to generate a functional recovery link” 是什么情况?

0
杉杉林
杉杉林

正好需要,太感谢了

返回顶部
顶部