通过Bitbucket钩子触发Jenkins流水线作业

111次阅读
没有评论

问题描述

想知道是否有办法通过Bitbucket钩子触发Jenkins的脚本流水线作业。他注意到有一个关于此问题的bug报告,但似乎多年来都没有修复。他想知道是否真的只能通过创建一个上游触发作业来实现,这种方式看起来非常笨拙。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果你只需要通用的post-receive钩子,你可以使用常规的Web钩子,并调用构建API端点。例如,如果你的Jenkins服务器名称是jenkins.example.com,要触发的Pipeline作业名称是my_awesome_job,那么你可以向https://jenkins.example.com/job/my_awesome_job/build发送POST请求。根据你的安全模型,这个请求可能需要进行身份验证和授权。如果需要身份验证和授权,你可以使用HTTP基本身份验证(不幸的是,我还没有找到合理的方法来进行密钥对身份验证)。

方案2

如果你需要在拉取请求时触发构建,那么你将需要使用插件。我一直在使用Bitbucket的pull-request-notifier插件来触发从Bitbucket的构建,并且效果还不错。特别是与Jenkins的Bitbucket Branch Source插件结合使用时效果更好,该插件会自动为Bitbucket项目中的每个分支和打开的PR创建Jenkins作业。这两个插件的组合使我能够在PR打开后立即触发构建,并在构建通过之前阻止合并PR(这是一个非常常见的工作流程,所以我认为即使你没有明确提到,也值得提一下)。
请注意,pull-request-notifier插件不需要任何费用。我使用的是Bitbucket Server,不是云端,所以我不确定在云端的兼容性。但是,我知道Jenkins的Bitbucket Branch Source插件可以自动为Bitbucket云设置Web钩子,所以我认为你甚至不需要pull-request-notifier插件。

正文完