持續集成工具之Jenkins使用配置
在上一篇部落格中,我們主要介紹了DevOps理念以及java環境和jenkins的安裝,回顧請參考//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 //updates.jenkins-ci.org/latest/gitlab-plugin.hpi --2020-10-13 20:04:19-- //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: //updates.jenkins-ci.org/download/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:20-- //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: //get.jenkins.io/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:21-- //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: //mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/1.5.13/gitlab-plugin.hpi [following] --2020-10-13 20:04:22-- //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來說,每一個插件就有一種功能,我們需要用到某些功能,就必須安裝對應的插件;安裝插件我們可以去//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打開,打開方法很簡單,不會的可以去看本人部落格//www.cnblogs.com/qiuhom-1874/p/13797199.html,這篇部落格里有介紹;
提示:填寫好以上內容,我們可以先測試下我們的配置是否正確,如果正確我們會在[email protected]的郵件中收到一份測試郵件,如下,如果有問題,這裡會提示我們;
提示:如果能夠正常的收到郵件,說明我們配置的郵件資訊沒有問題,此時就可以點擊應用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 [email protected] 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幫我們執行,以達到處理程式碼和部署相關操作;