我们有一个 Jenkins 和一个本地 Bitbucket 服务器。
我们已经安装
- Jenkins 上的“Bitbucket 插件”
- Bitbucket 上的“发布 Webhook”
然后我们在詹金斯中设置
- 要构建的分支
- 分支说明符为“**”
在 Post Webhooks 中我们检查了所有事件。
现在,当我们推送分支或删除拉取请求时,jenkins 会被触发,并且似乎会构建每个具有新提交的分支。 (但不知何故,当我们创建拉取请求时它不会被触发。)
现在的问题是:当测试失败时,我们如何将测试结果发送到 Bitbucket 以阻止合并?
我们发现了插件“违反 Bitbucket 服务器”,但它仅涵盖静态代码分析的结果,没有 jUnit 或 surfire 报告。
整个事情感觉很粗糙... 有没有好的教程可以教你如何双向集成 jenkins 和 bitbucket?或者使用可用的插件无法实现?
答案1
这里有三部分:
如何触发 PR 创作?为此,我使用了“bitbucket 的 pull request 通知程序”插件。从技术上讲,如果您使用“Bitbucket Branch Source”插件(如下所述),则不需要这个,但它确实为自托管 Bitbucket Server 用户提供了很好的生活质量改进。
Bitbucket 如何知道 Jenkins 构建何时失败? 这里有几个不同的选择。在我看来,到目前为止,解决这个问题的最佳方法是使用 CloudBees 官方“Bitbucket 分支源”插件。此插件负责 Jenkins 端所需的所有设置方面(如果您使用 Bitbucket Cloud,它甚至可以负责 Bitbucket 端的配置)。除此之外,此插件还会自动发现存储库、分支和拉取请求。它还将测试结果报告回 Bitbucket。如果您出于某种原因不想使用此插件,还有其他一些解决方案也适用于我,特别是“存储通知”插件。这个插件只是将测试结果报告回 Bitbucket,仅此而已。
如何防止失败的 PR 被合并?可以通过 Bitbucket 中的存储库设置来解决此问题。具体来说,存储库设置 > 合并检查 > 最低成功构建数。如果您想将其应用于项目中的所有存储库,而不是一次只应用于一个存储库,也可以使用 Bitbucket 的最新版本在项目级别调整此设置(自 5.5 以来,IIRC - 我现在懒得查看更改日志)。