Bitbucket 触发内网 Jenkins Build
在 Jenkins 上添加一个用来自动构建的用户: autobuilder
如果需要,你可以调整 autobuilder 的用户权限
系统管理 -》Configure Global Security -》 授权策略 -》项目矩阵授权策略
在项目中我们需要开启 "触发远程构建",并输入一个 "身份验证令牌",该值你可以从 https://randomkeygen.com/ 轻松的生成一个合格的身份验证令牌。
我们可以在红色方框处获得触发远程构建的URL, 替换 TOKEN_NAME 的值为:
http://192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
我们还需要为这个URL添加认证信息,使用 autobuilder 用户登录 jenkins 服务器中,点击右上角 "autobuilder" -》"设置" -》“Show API Token” 获得该用户的认证信息。
获得上面的信息后后就可以拼出完整的 URL :
http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
可以通过使用 curl 命令来测试
curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
公司使用的 bitbucket 是在外网上的,内部的 Jenkins 无法被 bitbucket 访问, 公司内部的公网IP,我们把公司的IP的 8888 端口通过路由器进行 NAT 映射到 192.168.0.218 的 8888 端口上
然后在外网的机器上使用 curl 来进行测试
curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@替换你的公网IP:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
测试成功后,开始对 bitbucket 进行配置,首先添加插件,点击 "管理" -》"寻找新插件",搜索 "hook" ,安装 "HTTP-Request Hook for Bitbucket Server"
进入项目中,点击 "Settings" -》“Hooks” -》启用 "HTTP Request Post-Receive Hook",填入信息
注意:Username 填入 autobuilder,Password 填入 用户的认证信息
当你向该 Bitbucket 项目的代码库中提交代码,Bitbucket 在收到代码推送后会使用我们在 Hooks 中设置的 URL 发送 http 请求,内网中的 Jenkins 服务器收到请求后触发一个新的 Build。
bitbucket 版本 v6.3.2
jenkins 2.2221
bitbucket 版本更新后,插件管理中没有了 HTTP-Request Hook for Bitbucket Server,可以使用 "Post Webhooks for Bitbucket" 这款免费插件代替。
Jenkins -> 全局安全配置 -> 不勾选 "启用代理兼容"