系統環境:
Bitbucket v4.5.2
Jenkins 2.60.3
在 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 -> 全局安全配置 -> 不勾選 "啟用代理兼容"