前言:
通過Jenkins與GitLab聯動,當gitlab倉庫中代碼發生變動(增、刪、改),自動觸發Jenkins自動構建發布,實現自動化運維。
思路:
- 安裝部署gitlab、安裝部署Jenkins
- jenkins安裝功能插件
- 安裝git工具
- Jenkins job配置構建觸發器
- gitlab倉庫配置webhooks
一、安裝部署Gitlab、Jenkins
1、GitLab的安裝流程如下:(點擊跳轉)
GitLab安裝部署教程
2、Jenkins的安裝流程如下:(點擊跳轉)
Jenkins安裝部署教程
二、Jenkins安裝插件
必備的插件是Git、GitLab、GitLab Hook;當然還可以加上Credentials Binding,來儲存我們的明文密碼,提高安全性。
插件安裝完畢后,添加相應功能
方式一、通過http方式鏈接
方式二、SSH密鑰類型
SSH免密登錄示意圖:
1、使用root用戶生成公鑰和私鑰
ssh-keygen -t rsa
在/root/.ssh/目錄保存了公鑰和使用
id_rsa:私鑰文件
id_rsa.pub:公鑰文件
2、把生成的公鑰放在Gitlab中
以root賬戶登錄——》點擊頭像——》Settings——》SSH Keys
復制剛才 id_rsa.pub文件的內容到這里,點擊“Add Key”
3、把生成的私鑰放在Jenkins中
打開全局憑證——》添加憑證
配置新項目,選擇好合適的git地址 和對應的憑證
三、安裝Git工具
為了讓jenkins支持從gitlab拉取源碼,需要在服務器上安裝Git工具
1、Linux安裝Git
yum install git -y 安裝
git --version 安裝后查看版本
2、進入jenkins設置
接着登錄jenkins界面,依次打開"系統管理" -> "Global Tool Configuration" 全局工具配置-> "Git" -> "Path to Git executable",
在此處填入"whereis git"查詢出的地址 + "/bin/git" (如上面"whereis git"的地址為"/usr/local/git",則應該填入 "/usr/local/git/bin/git") 並保存。
最后再在Jenkins新建項目中源碼管理Repository URL添加git地址,嘗試多刷幾次就可以了。
3、安裝指定版本的git或者最新版git
有時候我們安裝的git不是最新版本。可能會導致添加git倉庫失敗,例如以下情形:
原因分析:這是由於git客戶端版本過低造成的!或者未安裝git
Jenkins本機默認使用"yum install -y git" 安裝的git版本比較低,應該自行安裝更高版本的git。
我們可以從GitHub上下載最新的源碼編譯后安裝最新的git
這里可以參考這位作者的博客
git安裝
這里的描述及其部署都很詳細,所以我就不過多贅述了O(∩_∩)O哈哈~
四、Jenkins job配置構建觸發器
1、進入jenkins選中需要配置的項目,進行設置
Enabled GitLab triggers 允許gitlab觸發
push events 允許push 只要gitlab收到push操作 構建就執行 觸發事件
Opened Merge Request Events 合並請求 合並操作也可以觸發
只有兩種方式可以觸發 push上去觸發構建, 執行merge請求 把代碼合並進來了
2、點擊上圖中的高級,可以進行深度設置
允許哪個分支 , 當哪個分支收到push或者merge請求,默認為所有分支 收到觸發制的時候 就是執行job
可以單獨定義 只允許master分支 才構建
根據自己需求定義
token作用,訪問webhooks URL 需要攜帶token過來,才能觸發,有url也不行,有url和token才觸發
3、將這里配置生成的webhook URL配置到Gitlab中,就完成了。
五、gitlab倉庫配置webhooks
1、開啟webhook功能
使用root賬戶登錄到后台,點擊Admin Area——》Settings——》Network
·
2、勾選“Allow requests to the local network from web hooks and services”
·
3、在項目添加webhook
點擊項目——》Settings——》Integrations
此處的URL就是第四步中jenkins觸發器生成的,復制進去即可
4、點擊Test可以對我們配置的webhook進行測試驗證
5、注意:以下設置必須完成,否則會報錯!
Manager Jenkins ——》Configure System
6、如圖所示即為配置成功
六、效果演示
我們在 jenkins job 主頁面看到構建任務被觸發。
在gitlab 模擬一個push請求過來, jenkins自動觸發構建
觸發成功!!!