我有一个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}
更详细的信息可以在这里找到。