gpt4 book ai didi

git - 有没有办法让 Phabricator 将差异推送到存储库?

转载 作者:太空狗 更新时间:2023-10-29 14:28:10 25 4
gpt4 key购买 nike

我们的团队最近开始尝试使用 Phabricator 进行代码审查。

除了 Phabricator 之外,我们还有一个测试系统,可以自动构建和测试推送到我们主 git 存储库中特定分支的任何代码。有没有办法让 arc diff 自动将 diff 推送到那个特定的分支?测试通常需要几个小时,我希望人们可以在测试代码时查看代码。能否以某种方式将其集成为单元测试,而不必在发送差异以供审核之前完成?

最佳答案

arc diff 的目的是允许在将代码登陆到分支上的情况下执行测试/代码审查。我们通过 Herald 规则、Harbormaster 构建计划和 Jenkins 在这里做到这一点。

创建/更新差异时,监视 Repo 的 Herald 规则触发 Harbormaster 构建计划,该计划通过 HTTP post 请求触发 Jenkins。我将尝试详细说明基础知识,但如果您选择走这条路,我建议您在构建此过程时查看一些其他 Material 。

请注意 - Harbormaster 被列为“原型(prototype)”。意思是,对它的支持有限。但是,除了编写您自己的自定义代码之外,没有其他方法可以执行我在此建议的操作。

我希望这里有足够的内容来帮助您入门。根据您的特定需求进行制作需要您提供更多细节。这就是我们所做的,对我们来说效果很好。我希望它对你有用。

设置测试作业

必须对测试作业进行参数化,以便您可以将差异和构建 ID 作为参数传递。
在你的测试中,你会做这样的事情来从差异中提取代码:

#!/bin/bash
# Clean the branch
git fetch --all
git checkout master
git reset --hard origin/master
git pull

# Delete the arcpatch branch (ignoring error if the branch doesn't exist)
git branch -D arcpatch-D$DIFF || true

# Apply the patch
arc patch D$DIFF

# Update dependencies
git submodule update
composer install

然后触发您的常规测试。测试后,您将需要一些类似这样的代码来查看使用构建结果更新 Phabricator:

#!/bin/bash
# Let Phabricator know if the build succeeded
if [ -n "$PHID" ]; then
export PATH=$PATH:~/bin/arcanist/bin
if [ {{{Code to determine Failure}}} ]; then
jsonResult="{\"buildTargetPHID\":\"$PHID\",\"type\":\"fail\"}";
else
jsonResult="{\"buildTargetPHID\":\"$PHID\",\"type\":\"pass\"}";
fi
echo $jsonResult | arc call-conduit harbormaster.sendmessage;
fi

审查代码

与此同时,开发人员可以引用该差异 (http://{Phabricator.url}/D####)、审查代码,甚至可以按照与上述测试作业类似的流程运行任何测试。

先驱规则

先驱规则将在差异修订时触发。它将寻找任何指示您想要测试的更改(通常是特定 repo 中的任何内容)并将运行构建计划(如果您使用的是如何创建链接到 Jenkins 的构建计划,请参阅其他引用资料).

其他引用资料:

http://www.guywarner.com/2014/05/integrating-jenkins-and-phabricator.html http://www.guywarner.com/2014/06/part-2-integrating-phabricator-and.html

关于git - 有没有办法让 Phabricator 将差异推送到存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com