有没有办法让来自不同存储库的 Bitbucket Webhook 将 JenkinsFile 推送到单个管道项目中



我有一个bitbucket服务器:server.com/projects/sites/repos/。

这个目录有大约 50 个网站前端,所以这是 50 个唯一的存储库 URL,我希望 Bitbucket 用它们对 Jenkins 进行网络钩子调用。每个人都有自己的 JenkinsFile,然后我可以告诉 Jenkins 从哪个存储库中获取源代码以及运行哪些 npm 脚本。

不幸的是,除非我指定确切的存储库网址,否则我似乎一生都无法让Bitbucket插件连接到Jenkins,这意味着我必须为每个存储库创建一个Jenkins Pipeline项目。

没有人有过保持类似的东西干燥的经验?如果没有,我可能会避开 Jenkins 并推出我自己的解决方案。

感谢您的任何帮助!

我从来没有从 Jenkins 的 bitbucket 插件中获得任何有用的东西。 我使用"Http 请求后接收钩子",尽管它只会在推送时触发(显然在 GUI 中合并 PR 分支不是推送,因此它不会在该事件上触发)。 使用HRPRH,您可以使用"buildWithParameters"触发任何您想要的作业。

一种解决方案是使用 Bitbucket Pull 请求插件来构建和部署仅从 bitbucket 服务器到 Jenkins 的合并 Pull 请求。

您可以在 bitbucket 应用程序中配置 Jenkins 构建作业触发器,然后我会在批准的合并拉取请求上进行构建。对于管道作业,我发现这需要是一个带有参数触发器的构建,因此您需要能够使用此方法触发构建。

对于触发 Jenkins 作业的拉取请求通知程序,需要在 bitbucket 插件设置中配置以下内容:

Injection Url: http://JENKINS_URL/crumbIssuer/api/xml?xpath=//crumb 
Injection regexp: <crumb>([^<]*)</crumb> 
Basic authentication: username and password 
URL: http://(JENKINS_URL)/job/JOB_NAME/buildWithParameters?token=TOKEN&cause=PULL_REQUEST&PULL_REQUEST_URL=${PULL_REQUEST_URL}&PULL_REQUEST_ID=${PULL_REQUEST_ID}&PULL_REQUEST_TO_BRANCH=${PULL_REQUEST_TO_BRANCH}&PULL_REQUEST_FROM_HASH=${PULL_REQUEST_FROM_HASH}

这需要是一个 POST 操作 需要添加标头:

    Header: Jenkins-Crumb
    Value: ${INJECTION_URL_VALUE}

更详细的信息可以在这里找到。

最新更新