持續整合工具之Jenkins基礎使用

1874發表於2020-10-13

  在上一篇部落格中,我們主要介紹了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幫我們執行,以達到處理程式碼和部署相關操作;

相關文章