使用Phabricator进行持续集成(CI)?

Han*_*Sun 9 continuous-integration travis-ci phabricator circleci

我尝试了连续集成工具Travis CI,CircleCI和codeship,但发现它们都没有为phabricator提供支持文档.有没有人有关于如何与Phabricator进行持续集成(CI)的想法?

zer*_*iff 9

我已经完成了与Travis-CI的集成,通过向Phabricator添加post diff和land hook来将差异作为分支推送到GitHub,其中Travis寻找分支更新.据我所知,Travis-CI只与GitHub集成,所以如果你的主要回购就在那里而且Phabricator指向它,那么它就可以完成.

如果您想采用这种方法,那么首先要创建自己的ArcanistConfiguration并覆盖didRunWorkflow.另请参见如何创建新库.API文档相当不错,但我不得不通过一些试验和错误来获得我想要的东西.Phabricator人可能很乐意回答问题.

您还可以查看Phabricator管道differential.createcomment以将消息编写为差异,如下所示:

arc call-conduit --conduit="https://my.phabricator.com/" --arcrc-file="robot.arcrc" \
  differential.createcomment <<EOF
{"revision_id":"1234","message":"Yer build done failed"}
EOF
Run Code Online (Sandbox Code Playgroud)

具有推送消息的凭据robot.arcrcarcrc文件在哪里,并且1234是修订号.您必须使用conduitAPI来获取修订号.

因此,我认为答案是您可能必须构建自己的自定义解决方案,具体取决于要与其集成的CI工具的CI集成.这是Travis对Phabricator支持的讨论.

编辑:这是一个traphic,一个扩展arcanist的例子,将差异推到GitHub上的分支上arc diff并删除它们arc land.当Travis-CI从GitHub寻找更新时,它将构建你的差异.

旁注:这主要是大脑转储.我知道很好的答案有更多的代码示例和链接是皱眉头,但问题是相当开放的,并寻找指针,所以我正在努力提供帮助.


小智 6

如果你正在使用Jenkins,优步的优秀人员创建了一个Jenkins Phabricator Differential插件,可以真正清理你的工作配置(如果你已经使用zerodiff的帖子设置了它们).