在 Bitbucket 中显示 PR 构建状态
Show PR Build status in Bitbucket
我们使用 Team City(版本 2017.1.5)设置构建管道,并使用本地 Bitbucket 服务器( 4.8 版)用于我们的 git 存储库。我们的分支模型是 GitHub Flow
我们使用 mendhak Team City 插件向 Bitbucket
服务器报告构建状态。此外,我们在团队城市中创建了一个构建,以使用分支触发器构建拉取请求:+:refs/(pull-requests/*)/merge
.
但是,此分支过滤器的构建状态在拉取请求的 Bitbucket 中不可见 window/page。
如果我们在功能分支上使用分支过滤器(例如 +:refs/heads/(feature/*)
),构建状态将在 PR 上正确显示。但是,我们有兴趣在我们的合并请求中显示 PR 构建状态。
我们发现自 2013 年以来,Atlassian 已经有一个 open issue(是 - 将近 5 年)。看来短期内不会修复。
问:
是否有任何可用的解决方法或 Bitbucket 插件(或 Team City 插件)可以解决此问题。我们希望避免添加任何额外的分支过滤器/触发器。
我觉得这是一个相当普遍的问题,应该已经被许多其他团队/个人解决了。我只是碰巧找不到合适的资源/ material.
非常感谢任何指点。
问题是您正在使用的引用(在 refs/pull-request/*
下)仅供内部使用,在 Bitbucket 网络中不可见 UI。
假设您在 Bitbucket Server 上有一个像这样的存储库:
现在假设您创建了一个从 "branch" 到 "master" 的 PR。 Bitbucket Web 中可见的引用 UI 没有改变,但是 git clone --mirror
揭示了在幕后创建的隐藏 refs/pull-request/*
引用:
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
结果:
与仅构建 branch
相比,使用 Team City 或 Jenkins 或 Bamboo 或使用 refs/pull-requests/1/merge
的任何构建(例如,本例中的 01ebefda503c
)确实具有一大优势。
在实际合并之前,您可以先发制人地构建真实的东西(合并)。这就像是对未来的偷窥。
但是,如果您随后尝试使用相同的引用发布构建状态,则它有一个主要缺点。提交 ID 01ebefda503c
在 Bitbucket 的 Web UI 中不可见,因此拉取请求构建状态集成不会在成功(或失败)的构建中出现。
但是有一个很好的解决方法。让 Team City(或 Jenkins 或 Bamboo 等)毫无意义地将构建状态推送到抢先合并,然后使用 curl
将相同构建状态的副本发送到 HEAD^2,又名 01ebefda503c^2
又名 e466842138b65
.
(背景:插入符运算符“^”获取指定提交的给定父级,例如,^1 是第一个父级,^2 是第二个父级,如果您正在与疯狂的人一起工作,^3 会成为章鱼合并的第 3 个父代,依此类推。就我个人而言,多年来我没有在野外看到真正的章鱼合并。还记得绝大多数提交只有一个父代,也就是 "string-of-pearls" 样式提交。只有合并有 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。 :-)
我们使用 Team City(版本 2017.1.5)设置构建管道,并使用本地 Bitbucket 服务器( 4.8 版)用于我们的 git 存储库。我们的分支模型是 GitHub Flow
我们使用 mendhak Team City 插件向 Bitbucket
服务器报告构建状态。此外,我们在团队城市中创建了一个构建,以使用分支触发器构建拉取请求:+:refs/(pull-requests/*)/merge
.
但是,此分支过滤器的构建状态在拉取请求的 Bitbucket 中不可见 window/page。
如果我们在功能分支上使用分支过滤器(例如 +:refs/heads/(feature/*)
),构建状态将在 PR 上正确显示。但是,我们有兴趣在我们的合并请求中显示 PR 构建状态。
我们发现自 2013 年以来,Atlassian 已经有一个 open issue(是 - 将近 5 年)。看来短期内不会修复。
问:
是否有任何可用的解决方法或 Bitbucket 插件(或 Team City 插件)可以解决此问题。我们希望避免添加任何额外的分支过滤器/触发器。
我觉得这是一个相当普遍的问题,应该已经被许多其他团队/个人解决了。我只是碰巧找不到合适的资源/ material.
非常感谢任何指点。
问题是您正在使用的引用(在 refs/pull-request/*
下)仅供内部使用,在 Bitbucket 网络中不可见 UI。
假设您在 Bitbucket Server 上有一个像这样的存储库:
现在假设您创建了一个从 "branch" 到 "master" 的 PR。 Bitbucket Web 中可见的引用 UI 没有改变,但是 git clone --mirror
揭示了在幕后创建的隐藏 refs/pull-request/*
引用:
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
结果:
与仅构建 branch
相比,使用 Team City 或 Jenkins 或 Bamboo 或使用 refs/pull-requests/1/merge
的任何构建(例如,本例中的 01ebefda503c
)确实具有一大优势。
在实际合并之前,您可以先发制人地构建真实的东西(合并)。这就像是对未来的偷窥。
但是,如果您随后尝试使用相同的引用发布构建状态,则它有一个主要缺点。提交 ID 01ebefda503c
在 Bitbucket 的 Web UI 中不可见,因此拉取请求构建状态集成不会在成功(或失败)的构建中出现。
但是有一个很好的解决方法。让 Team City(或 Jenkins 或 Bamboo 等)毫无意义地将构建状态推送到抢先合并,然后使用 curl
将相同构建状态的副本发送到 HEAD^2,又名 01ebefda503c^2
又名 e466842138b65
.
(背景:插入符运算符“^”获取指定提交的给定父级,例如,^1 是第一个父级,^2 是第二个父级,如果您正在与疯狂的人一起工作,^3 会成为章鱼合并的第 3 个父代,依此类推。就我个人而言,多年来我没有在野外看到真正的章鱼合并。还记得绝大多数提交只有一个父代,也就是 "string-of-pearls" 样式提交。只有合并有 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。 :-)