1. 程式人生 > >Jenkins的安裝配置和使用心得

Jenkins的安裝配置和使用心得

Jenkins的安裝配置和使用心得

1 Jenkins介紹

Jenkins是一個獨立的開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。前身是Hudson是一個可擴充套件的持續整合引擎。可用於自動化各種任務,如構建,測試和部署軟體。Jenkins可以通過本機系統包Docker安裝,甚至可以通過安裝Java Runtime Environment的任何機器獨立執行。

下圖是我在網上找的,便於理解:

 

2 環境準備

本文介紹的jenkins是基於Gitlab + Maven + Tomcat實現自動整合、打包、部署,其他整合方式可上網瞭解。

2.1 環境

(1) Gitlab倉庫

(2) 至少一臺伺服器用於安裝Jdk、Maven、Git、jenkins,ip:10.8.165.11

(3) 至少一臺目標生產伺服器,可多臺,ip:10.8.165.15

3 Jenkins安裝及相關配置

這裡Jenkins的安裝配置介紹不是很全面的,文章只做一些基本的描述。

3.1 下載

下載jenkins的war包。網址: https://jenkins.io/download。如圖:

 3.2 安裝

Jenkins的安裝方式有很多,這裡根據最簡單的情況安裝,執行命令:

java -jar jenkins.war --httpPort=8888 -Dfile.encoding=UTF-8,也可以使用tomcat進行部署。開放8888埠,提供區域網內客戶機訪問,瀏覽器訪問10.8.165.11:8888進入到首頁,首次訪問需要初始化,如下圖:

 進入/user/.jenkins/secrets/initialAdminPassword下獲取初始化管理員密碼,點選continue,在有網路的情況下進入到如下頁面:

 可以選擇推薦的外掛安裝,也可以選擇自定義Jenkins的外掛安裝。無網路的情況出現如下提示:

 則選擇Skip Plugin Installations跳過外掛安裝,離線外掛安裝後面介紹。

外掛安裝完成後進入如下頁面,設定登入使用者:

Save and Continue。

Save and Finish,設定成功後進入到jenkins首頁。

3.3 管理

(1) jenkins外掛安裝

jenkins依賴的外掛比較多,如果安裝jenkins時安裝了推薦的外掛,基本上已經夠用了,額外的外掛需要時再安裝,外掛的安裝有兩種方式:線上安裝和離線安裝。

A、線上安裝,登入jenkins,選擇系統管理,如圖:

進入如下頁面,點選外掛管理:

Updates欄位為可更新的外掛,Available為可線上安裝的,Installed為已安裝的,勾選需要的外掛,點選Install without restart,等待安裝完成。

 

B、離線安裝。

https://plugins.jenkins.io進行外掛搜尋,如圖:

搜尋結果,選擇需要的外掛:

標記有required的依賴外掛為必須安裝的外掛,點選Archives進入到jenkins外掛庫:

選擇合適的版本,下載hpi檔案:

下一步到jenkins系統管理→外掛管理→Advanced選項下,上傳已經下載的hpi檔案,重啟jenkins即可。注意:外掛之間有很多依賴,根據提示下載相應版本的外掛安裝。

(2) jenkins系統設定

配置之前需要說明一點,提前安裝外掛,避免配置過程中返回安裝外掛,打亂思緒,因為jenkins外掛互相依賴的較多,比較零亂,有遺漏的再補充,所需外掛:Folders Plugin、Maven、SSH、Gitlab、Gitlab Hook Plugin、ThinBackup等及其所依賴的必須外掛。

配置的大概過程為:配置jenkins工具的jdk、maven、git → 然後再進行系統環境設定 → 再配置SSH Servers。

A、jdk、maven、git配置,依次點選Manage Jenkins→Global Tool Configuration,如下,進行系統全域性工具配置:

配置maven,加入maven的setting.xml的配置檔案,

File path:“../conf/settings.xml”如圖:

配置jdk,Name取jdk1.8.0_192(可自己隨意取,這裡取安裝時的jdk名字),新增jdk的安裝目錄,JAVA_HOME:“../java/jdk1.8.0_192”如圖:

配置git,Name隨意取,新增git的安裝路徑,Path to Git executable:“../Git/bin/git.exe” 如圖:

B、Jenkins系統環境設定,進入系統設定,如圖:

Jenkins的Home directory:“../jenkins”,建議修改,不要使用預設的目錄,修改方式點選後面的問號即可檢視,如圖:

Maven的jar包倉庫(Global MAVEN_OPTS),此選項為構建過程中maven jar包下載的目錄,在這裡遇到過不同情況,經過測試,linux伺服器下載後會在每個專案下建立一個的存放jar包的repository目錄,windows伺服器則不會,為了避免jar包重複下載,節省空間,所以在此修改到一個路徑下,Global MAVEN_OPTS:“-Dmaven.repo.local=../repository”如圖:

C、SSH Servers,需要先安裝ssh外掛,依次進入:Manage Jenkins→Configure System,下拉滾動條到Publish over SSH,配置ssh的連線,目的是通過jenkins連線伺服器,對伺服器進行一些列的操作,ssh 連線的方式有兩種。

一種是通過金鑰驗證,免密登入,大致過程如下:

Jenkins伺服器(11)生成金鑰對,並將公鑰(id_rsa.pub)儲存到生產機目標伺服器(15);11此時要登入15,傳送請求到15,15生成隨機字串並用11的公鑰加密後,發給11;11用私鑰將其解密後發回給15,驗證成功後登入。

這裡考慮到多臺伺服器的部署,免去重複配置,就將金鑰配置到Jenkins的公共配置裡,在私有配置中配置也可以,如圖:

Passphrase:密碼(11伺服器生成金鑰對的密碼,如果未設定則為空)

Path to key:私鑰(id_rsa)的路徑

Key:私鑰(id_rsa)的內容

私有配置:

SSH Server Name:jenkins測試(隨便取)

Hostname:ssh連線的目標主機ip,10.8.165.15

Username:使用者名稱

Remote Directory:遠端目錄

測試連線,success表示連線成功。

另一種是通過使用者名稱和密碼的連線,通過使用者名稱和密碼連線的方式則無需配置金鑰的一步,直接進行如下配置:

點選Advanced...,新增密碼,測試連線success,如圖:

如果多臺伺服器配置點選add按鈕新增,配置方式一樣,如圖:

到此,ssh伺服器已配置完畢。

4 系統部署

對於jenkins的自動構建部署,首先我們要了解jenkins工作的過程,才知道需要配置些什麼,文章開頭對jenkins原理大概描述了,我們要實現的就是:開發者只要通過IDE提交程式碼到GitLab,jenkins能自動監測到提交的最新程式碼,從GitLab特定分支下載原始碼,並通過maven構建工具進行編譯打包(war、jar),通過shell指令碼對專案歷史版本進行備份、刪除,然後通過ssh外掛工具上傳到生產Tomcat專案部署路徑下,對Tomcat進行停止,重啟,完成自動部署。

下面進行專案配置,建立專案,如圖:

填寫專案名稱,建立maven專案,點選確定,如圖:

緊接著到專案配置的頁面,複製gitlab專案的ssh下載地址:

Description,填寫一下專案描述:

然後進入Source Code Management(原始碼管理),如果在gitlab中設定了金鑰,則需要到Jenkins的Credentials→System→Global credentials (unrestricted)下新增憑據,然後Credentials處可以選擇所新增的憑據名稱了,也可以在此處直接點Add新增,只要保證jenkins能從gitlab下載原始碼即可。

下一步Build Triggers,構建需求中要求IDE提交程式碼即立即觸發構建,用到一個叫webhooks的輕量的事件處理應用,gitlab中已經有這項功能,這就需要先下載Gitlab Hook Plugin 外掛,如果你安裝好外掛後能看到如圖功能,勾選Build when a change is pushed to GitLab,這裡複製 GitLab webhook URL暫時儲存到記事本,後面有用。

點選Advanced...展開,點選Generate建立Secret token,再把token複製到記事本,如圖:

接下來到gitlab中設定,進入到專案設定中,看到webhooks選項,點進去看到如圖,將剛才儲存到記事本的url和Secret Token分別填入,下拉滾動條後看見Add Webhook,點選進入。

點選Add Webhook後,在已經新增的webhook中看到,

點選test,如果看到下圖。則證明連線成功。

下面進入到Pre Steps,點選Add pre-build step,進行構建前操作,目的是構建前對伺服器已經部署的專案進行備份,如圖:

點選Send files or execute commands over SSH,選擇已經新增的ssh servers,如圖:

Exec command中新增備份指令碼,參考:

echo "備份war"
tomcatpath=/opt/app/apache-tomcat-8.0.46
war_name=專案名稱
mkdir -p  ${tomcatpath}/webapps/bak
cp ${tomcatpath}/webapps/${war_name}.war ${tomcatpath}/webapps/bak/${war_name}.war-`date +%Y-%m-%d_%H%M`

點選Build,配置maven的構建,指令“clean package  -Dmaven.test.skip=true”,跳過且不編譯測試類,MAVEN_OPTS倉庫位置,如圖:

接下來配置構建後操作,進入Post Steps,點選Add post-build step,選擇Send files or execute commands over SSH,這一步操作將maven構建後的war包上傳到伺服器,關閉tomcat,重啟tomcat,以及日誌輸出到jenkins一系列步驟。

點選Send files or execute commands over SSH,

Name:選擇伺服器,

Source files:填寫構建後的war包(target/*.war),

Remove prefix:去掉Source files檔案的字首,這裡就是target,

Remote directory: 遠端目錄,上面配置ssh servers時路徑已經配好,這裡不 需要重複配置。

Exec command:執行指令對tomcat進行操作。

指令碼參考:

#!bin/bash
tomcatpath=/opt/app/apache-tomcat-8.0.46
war_name=專案名稱
echo "關閉tomcat"
sh ${tomcatpath}/bin/shutdown.sh
echo "檢查tomcat是否關閉"
tomcat_pid=`ps -ef|grep "tomcat" |grep -v grep|awk '{print $2}'`
echo $tomcat_pid
kill -9 $tomcat_pid
echo "tomcat has shutdown"
echo "刪除專案"
rm -rf  ${tomcatpath}/webapps/${war_name}_bak
mv ${tomcatpath}/webapps/${war_name} ${tomcatpath}/webapps/${war_name}_bak
rm -rf  ${tomcatpath}/logs/catalina.out
echo "啟動tomcat"
sh ${tomcatpath}/bin/startup.sh
echo "輸出日誌"
sleep 8s
i=1
while(($i<20))
do
  CHECK_RESULT=`cat ${tomcatpath}/logs/catalina.out | grep 'org.apache.catalina.startup.Catalina.start Server startup in' | wc -l`
  if(($CHECK_RESULT==1))
  then
    cat ${tomcatpath}/logs/catalina.out
    echo "build success"
    exit 0
  else
    echo "waiting"$i
    sleep 2s
  fi
  i=$(($i+1))
done
cat ${tomcatpath}/logs/catalina.out
echo "build fail"
exit 1

如需構建成功後進行郵件通知可接著配置:

 

到這裡,專案配置大概完畢,回到專案首頁,點選立即構建:

檢視日誌:

 構建成功:

Tomcat啟動成功,整個構建過程完畢,tomcat的日誌列印參考linux cat指令,tail指令。

如果上面Build Triggers webhooks配置成功,那麼只要提交程式碼到gitlab,即可自動構建,就不需要人工干預去執行構建操作了。

5 維護

5.1 備份

Jenkins的配置建議進行備份,備份方法:安裝ThinBackup外掛,進入Manage Jenkins→ ThinBackup,如圖:

 

點選Settings,設定Backup directory備份目錄:

回到ThinBackup外掛首頁,點選 Backup Now,這一步沒有提示,去到備份目錄下可看到備份的記錄:

恢復備份點選Restore,如圖,選擇恢復的版本,恢復即可: