gpt4 book ai didi

git - 在 Bitbucket 中显示 PR 构建状态

转载 作者:太空狗 更新时间:2023-10-29 13:00:55 33 4
gpt4 key购买 nike

我们使用 Team City(版本 2017.1.5)设置构建管道,并使用本地 Bitbucket 服务器(版本 4.8)作为我们的 git 存储库。我们的分支模型是GitHub Flow

我们使用 mendhak Team CityBitbucket 服务器报告构建状态的插件。此外,我们在 team city 中创建了一个构建,以使用分支触发器构建 pull 请求:+:refs/(pull-requests/*)/merge

但是,此分支过滤器的构建状态在 pull 请求窗口/页面的 Bitbucket 中不可见。

如果我们在功能分支上使用分支过滤器(例如 +:refs/heads/(feature/*)),构建状态会在 PR 上正确显示。但是,我们有兴趣在我们的 merge 请求中显示 PR 构建状态。

我们发现已经有一个open issue自 2013 年以来使用 Atlassian(是 - 将近 5 年)。看起来它不会很快被修复。

问:

是否有任何可用的解决方法或 Bitbucket 插件(或 Team City 插件)可以解决此问题。我们希望避免添加任何额外的分支过滤器/触发器。

我觉得这是一个相当普遍的问题,应该已经被许多其他团队/个人解决了。我只是碰巧找不到合适的资源/ Material 。

非常感谢任何指点。

最佳答案

问题是您正在使用的引用(在 refs/pull-request/* 下)仅供内部使用,在 Bitbucket 网络用户界面中不可见。

假设您在 Bitbucket Server 上有一个像这样的存储库:

enter image description here

现在假设您创建了一个从“branch”到“master”的 PR。 Bitbucket Web UI 中可见的 refs 没有改变,但是 git clone --mirror 显示 stash 的 refs/pull-request/* refs 在场景:

git clone --mirror http://vm.bit-booster.com/bitbucket/scm/bb/rebase-example-1.git
cd ./rebase-example-1.git
git log --all --date-order --decorate --graph

结果:

enter image description here

拥有 Team City 或 Jenkins 或 Bamboo 或使用 refs/pull-requests/1/merge 的任何构建(例如,本例中的 01ebefda503c)确实有一个主要优势与仅构建 branch 相比。 在实际 merge 之前,您可以先发制人地构建真实的东西( merge )。这就像是对 future 的一瞥。

但是,如果您随后尝试使用相同的 ref 发布构建状态,则它有一个主要缺点。 Commit id 01ebefda503c 在 Bitbucket 的 Web UI 中不可见,因此 pull 请求构建状态集成不会在成功(或失败)构建时出现。

但是有一个巧妙的解决方法。让 Team City(或 Jenkins 或 Bamboo 等)毫无意义地将构建状态推送到抢先 merge ,然后使用 curl 将相同构建状态的副本发送到 HEAD^2,又名 01ebefda503c^2 又名 e466842138b65

(背景:插入符运算符“^”获取指定提交的给定父级,例如,^1 是第一个父级,^2 是第二个父级,如果您正在与疯狂的人一起工作,^3 将是第三个来自 Octopus merge 的 parent ,等等。就我个人而言,多年来我没有在野外看到真正的 Octopus merge 。还记得绝大多数提交只有一个 parent ,也就是“珍珠串”风格的提交。只有 merge 有 2 个或更多父项。)

您可以像这样针对 HEAD^2 触发构建状态:

curl --user user:password -H "Content-Type: application/json" -X POST -d \
'{"state":"SUCCESSFUL", "key":"K", "name":"K-9", "url":"http://bit-booster.com/"}' \
http://vm.bit-booster.com/bitbucket/rest/build-status/1.0/commits/e466842138b658a1b09caa0b1caea065194311ce

然后构建状态将在 PR 上可见。

然后查看我的 Bitbucket add-on . :-)

关于git - 在 Bitbucket 中显示 PR 构建状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553693/

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