我尝试了持续集成工具 Travis CI、CircleCI 和 codeship,但发现它们都没有为 phabricator 提供支持文档。有人对如何使用 Phabricator 进行持续集成 (CI)有想法吗?
3 回答
我通过向 Phabricator 添加 post diff 和land hooks 将差异作为分支推送到 Travis 查找分支更新的 GitHub 来完成与 Travis-CI 的集成。据我所知,Travis-CI 只与 GitHub 集成,所以如果你的主要 repo 在那里并且 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
具有推送消息凭据robot.arcrc
的文件在哪里,并且是修订号。您必须使用API 来获取修订号。arcrc
1234
conduit
因此,我认为答案是您可能必须构建自己的自定义解决方案,具体取决于您想要集成的 CI 工具的 CI 集成。这里讨论了 Travis 对 Phabricator 的支持。
编辑:这是traphic,一个扩展 arcanist 以将差异推送到 GitHub 上的分支并在 上arc diff
删除它们的示例arc land
。当 Travis-CI 从 GitHub 中寻找更新时,它会构建你的差异。
旁注:这主要是一个大脑转储。我知道好的答案有更多的代码示例和链接不受欢迎,但这个问题非常开放并且正在寻找指针,所以我试图提供帮助。
如果您使用的是 Jenkins,Uber 的好人创建了一个 Jenkins Phabricator Differential 插件,它可以真正清理您的工作配置(如果您已经使用zerodiff 帖子中的链接进行了设置)。
可能值得注意的是,Phabricator 的持续集成工具(即 Harbourmaster)目前正在开发中。
您可以在他们的比较页面的表格中找到它。见http://phabricator.org/comparison/