Jenkins配置Gitlab自動觸發構建
現在要讓gitlab去觸發,讓gitlab點擊立即構建,這也是通過插件實現
Git push 觸發自動構建
在我們已經成功實現了將 Gitlab 中 monitor 倉庫的代碼部署到 nginx服務中,但是每次部署需要我們手動去點擊“立即構建”,下面我們將實現當 Gitlab 收到push 請求后,就觸發 Jenkins 構建,將倉庫的變化部署到 nginx 服務中。
Jenkinsjob 配置構建觸發器
回到 My-freestyle-job 的配置頁面,下拉到構建觸發器部分
勾選 gitlab 觸發選項,進入具體配置頁面
點擊高級
Enabled GitLab triggers 允許gitlab觸發
push events 允許push 只要gitlab收到push操作 構建就執行 觸發事件
Opened Merge Request Events 合並請求 合並操作也可以觸發
只有兩種方式可以觸發 push上去觸發構建, 執行merge請求 把代碼合並進來了
允許哪個分支 , 當哪個分支收到push或者merge請求,默認為所有分支 收到觸發制的時候 就是執行job
可以單獨定義 只允許master分支 才構建
根據自己需求定義
token作用,訪問webhooks URL 需要攜帶token過來,才能觸發,有url也不行,有url和token才觸發
配置完成后,保存配置。
Gitlab 倉庫配置 webhooks
當倉庫收到push 不是gitlab收到 是某一個倉庫收到 push操作或者merge請求事件 才會觸發構建 ,和倉庫相關
進入 Gitlab 中 monitor 倉庫的設置頁面,
進入集成配置頁面,復制 jenkins 觸發器配置頁面的 url 及 Token
觸發事件 默認事件類型是push
配置完成后,添加weohooks
添加了一條 ,在頁面下面測試觸發設置 測試用test 測試用push events 推送事件
200顯示成功,執行成功了
我們在 jenkins job 主頁面看到構建任務被觸發。
在gitlab 模擬一個push請求過來, jenkins自動觸發構建
觸發成功
剛才是模擬請求
這次執行構建任務的時候,我們沒有點立即構建
這是模擬push操作
接着我們將倉庫克隆到客戶端,在客戶端測試觸發 push 操作
admin可以直接向master push,dev用戶不可用
克隆 monitor 倉庫到 ci-node1 本地 ci-node1上綁定是root用戶
[root@ci-node1 data]# git clone git@192.168.31.11:test/monitor.git Cloning into 'monitor'... remote: Counting objects: 435, done. remote: Compressing objects: 100% (372/372), done. remote: Total 435 (delta 53), reused 435 (delta 53) Receiving objects: 100% (435/435), 8.78 MiB | 0 bytes/s, done. Resolving deltas: 100% (53/53), done.
cd monitor 倉庫里面 更改 index.html 文件,push 至 Gitlab
[root@ci-node1 data]# cd monitor/
[root@ci-node1 monitor]# vim index.html
改紅色框主的
改后 wq 保存退出
修改好index.html 文件提交
[root@ci-node1 monitor]# git add . [root@ci-node1 monitor]# git commit -m "modify index.html on ci-node1" [master b364e08] modify index.html on ci-node1 1 file changed, 1 insertion(+), 1 deletion(-)
發送push push成功
[root@ci-node1 monitor]# git push -u origin master Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 315 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) To git@192.168.31.11:test/monitor.git f6070e1..b364e08 master -> master Branch master set up to track remote branch master from origin.
看看gitlab 倉庫有沒有變化,Gitlab 收到本次推送的內容,
Jenkins 對應的 job 已經觸發構建
這個地方改變 代表部署成功
網站 index.html 內容被更新
構建前:
構建后
同時我們在 jenkins 中 job 主頁面的“新修改記錄”部分可以看到我們的修改日志。