在上一篇部落格中,我們主要介紹了DevOps理念以及java環境和jenkins的安裝,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13805666.html;今天我們主要來看看jenkins常用外掛的安裝、配置使用;
我們知道在安裝jenkins的過程中,啟用jenkins後,首先是讓我們安裝一些外掛,我們選擇的是推薦外掛;推薦外掛一般都是很常用的基礎外掛,也是我們使用jenkins的必須品,但這樣安裝好的jenkins在很多功能上都達不到我們使用的需求,於是我們需要額外安裝其他外掛來豐富jenkins的功能;
手動下載安裝gitlab外掛
[root@node04 ~]# cd /var/lib/jenkins/plugins/ [root@node04 plugins]# wget http://updates.jenkins-ci.org/latest/gitlab-plugin.hpi --2020-10-13 20:04:19-- http://updates.jenkins-ci.org/latest/gitlab-plugin.hpi Resolving updates.jenkins-ci.org (updates.jenkins-ci.org)... 52.202.51.185 Connecting to updates.jenkins-ci.org (updates.jenkins-ci.org)|52.202.51.185|:80... connected. HTTP request sent, awaiting response... 302 Found Location: http://updates.jenkins-ci.org/download/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:20-- http://updates.jenkins-ci.org/download/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi Reusing existing connection to updates.jenkins-ci.org:80. HTTP request sent, awaiting response... 302 Found Location: https://get.jenkins.io/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:21-- https://get.jenkins.io/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi Resolving get.jenkins.io (get.jenkins.io)... 52.167.253.43 Connecting to get.jenkins.io (get.jenkins.io)|52.167.253.43|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:22-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 8456411 (8.1M) [application/octet-stream] Saving to: ‘gitlab-plugin.hpi’ 100%[==================================================================>] 8,456,411 2.21MB/s in 3.7s 2020-10-13 20:04:27 (2.21 MB/s) - ‘gitlab-plugin.hpi’ saved [8456411/8456411] [root@node04 plugins]# ll gitlab-plugin.hpi -rw-r--r-- 1 root root 8456411 Sep 12 2019 gitlab-plugin.hpi [root@node04 plugins]#
提示:對於jenkins來說,每一個外掛就有一種功能,我們需要用到某些功能,就必須安裝對應的外掛;安裝外掛我們可以去http://updates.jenkins-ci.org/download/plugins/這個網站下載,把下載好的外掛放到jenkins的資料目錄裡有個plugins目錄下即可;
重啟jenkins
[root@node04 plugins]# systemctl restart jenkins [root@node04 plugins]# ls -d gitlab-plugin* gitlab-plugin gitlab-plugin.hpi [root@node04 plugins]# ll gitlab-plugin total 4 drwxr-xr-x 2 root root 4096 Oct 13 20:06 help drwxr-xr-x 3 root root 19 Oct 13 20:06 images drwxr-xr-x 3 root root 38 Oct 13 20:06 META-INF drwxr-xr-x 3 root root 17 Oct 13 20:06 WEB-INF [root@node04 plugins]#
提示:可以看到重啟jenkins後,對應下載的.hpi包就自動解壓;
驗證:登入jenkins,檢視對應外掛是否已經安裝生效?
提示:可以看到gitlab plugin外掛已經在安裝好了;以上是手動安裝外掛的方式,但通常如果一個外掛有依賴其他外掛,這種手動的安裝方式就顯得格外麻煩,因為我們要手動解決外掛和外掛間的依賴關係;所以通常手動安裝外掛的方式很少;
使用jenkins web影像介面安裝外掛
提示:以上我們要安裝role base外掛,我們需要切換到可選外掛上,然後搜尋關鍵字,然後把要安裝的外掛打勾,然後點選下面的直接安裝;
提示:這裡顯示安裝已經完成,我們需要點選安裝完成後重啟,此時jenkins就會重啟,重啟後的外掛就生效了;
提示:當然我們也可以手動到命令列介面重啟jenkins;
驗證:重新整理web介面,去外掛管理檢視對應外掛是否安裝好了?
提示:可以看到對應外掛已經在已安裝的列表中了;說明外掛安裝好了;以上就是jenkins的外掛安裝方法;
建立使用者
提示:返回首頁,點選系統管理,然後找到管理使用者;
提示:點選新建使用者,填寫對應使用者的使用者名稱,密碼,郵箱,然後點選新建使用者;
提示:此時使用者列表中就有兩個使用者;
驗證:登入test帳號,看看是否可以登入?
提示:可以看到test使用者是可以正常登入,並且擁有和管理員一樣的介面;這意味著我們剛才建立的test使用者是一個管理員;
更改授權策略
提示:點選系統設定,找到全域性安全配置裡,可以看到預設授權策略是登入使用者可以做任何事情,這也是我們剛才新建使用者test,登入進去看到和管理員一樣的介面的原因;
更改授權策略為role base
提示:選擇role base 然後點選應用就好了;
給test使用者授權
提示:更改授權策略為role base以後,返回主選單,點選系統管理,裡面就會多一個manage and assign roles的圖示,我們點選它就可以來管理jenkins使用者的角色和角色許可權以及角色對應的使用者;
提示:首先要新增一個角色,在role to add中輸入對應的角色名稱,然後點選後面的add就建立好一個角色,建立好角色後,我們就可以對他做賦權,需要用到哪些許可權,就在對應的格子裡打勾就好;最後點選下面的儲存或應用;如上,read only這個角色就是對全部有讀的許可權;只要關聯到該角色的使用者都會擁有同角色相同的許可權;
關聯使用者
提示:進入分配角色裡,可以看到現在多了read only這個角色;預設情況這裡只看得到一個管理員帳號,對於test使用者,我們要在下面輸入test,然後點選新增,然後對應的test使用者才會到上面的表中,然後我們就可以選擇給test使用者屬於哪個角色,在對應的角色下面打上對勾即可;最後點選最下方的應用儲存,此時對test使用者角色繫結就完成了;
驗證:現在登入test使用者,看看是否還和剛才登入看到的介面一樣呢?
提示:可以看到現在登入test使用者就不是管理員介面了;
jenkins 郵箱配置
提示:開啟系統管理,系統配置,預設情況這裡的系統管理員郵件地址是沒有的,這裡我們填寫一個網際網路郵件地址即可;然後接著往下拖,最後有一個郵件通知;
提示:點選開高階;這裡需提前把網際網路郵箱的smtp開啟,開啟方法很簡單,不會的可以去看本人部落格https://www.cnblogs.com/qiuhom-1874/p/13797199.html,這篇部落格裡有介紹;
提示:填寫好以上內容,我們可以先測試下我們的配置是否正確,如果正確我們會在linux_test01@126.com的郵件中收到一份測試郵件,如下,如果有問題,這裡會提示我們;
提示:如果能夠正常的收到郵件,說明我們配置的郵件資訊沒有問題,此時就可以點選應用jenkins的郵件通知就配置好了;
配置jenkins自動從gitlab上拉取程式碼到本地
在jenkins伺服器上生成ssh金鑰對
[root@node04 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:afCQfhOo1+JKhgsdSYpobedmlK532Ao/UIXE0Vs073c root@node04.test.org The key's randomart image is: +---[RSA 2048]----+ | oo+ .o | | o = .o | | . * + . | |oo.. +.* o. | |+.ooo++ S . . E | |...+=o + . . . | |. o.+=+ | | . +*= o | | ..oo+ | +----[SHA256]-----+ [root@node04 ~]#
把jenkins上生成的公鑰拷貝到gitlab上
提示:把jenkins 啟動使用者的公鑰放在gitlab上,這樣再用jenkins的啟動使用者到指定的gitlab上克隆程式碼就不會在讓我們輸入使用者名稱和密碼了;
測試:在jenkins 使用root 克隆gitlab上的test專案,看看是否還要輸入密碼?
提示:我們複製專案的克隆地址要複製基於ssh協議對克隆地址;
提示:第一次克隆需要輸入yes確認我們連線的主機;可以看到現在用jenkins啟動使用者root克隆gitlab上的專案都是不需要輸入使用者名稱和密碼;
在jenkins伺服器新增證照
提示:到jenkins的系統管理-->manage credentials -->選擇全域性-->新增憑據;填寫好上面的內容;這裡的新增證照就是把剛才在放在gitlab上的公鑰對應的私鑰放上去;必須要和gitlab上的公鑰是一對,這樣才可以實現加密解密;
新增好憑據以後,接下來我們可以新增一個專案,然後測試,看看jenkins是否能夠自動從gitlab上把對應的專案拉到本地
建立專案
提示:這裡把要克隆的專案地址複製到倉庫位址列,然後選擇對應的憑證,點選儲存;原始碼管理就配置完了;
提示:可以看到控制檯輸出的日誌是成功狀態的;
驗證:去jenkins的儲存資料的目錄下,看看對應專案是否克隆下來了?
提示:可以看到在jenkins的資料目錄下有個workspace的目錄下有一個和我們在jenkins上建立的任務名稱同名的一個目錄,裡面放著我們從gitlab上拉下來的檔案;說明我們配置jenkins免密從gitlab上拉去程式碼沒有問題;後續我們就可以把這些程式碼經過處理,分批部署到其他伺服器上了;後續怎麼處理程式碼,怎麼部署,我們可以基於jenkins的pipline指令碼,也可以自己寫shell指令碼交給jenkins幫我們執行,以達到處理程式碼和部署相關操作;