Jenkins的安裝配置和使用

Jenkins的安裝配置和使用java

1 Jenkins介紹linux

w3cschool中這樣介紹:Jenkins是一個獨立的開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。前身是Hudson是一個可擴展的持續集成引擎。可用於自動化各類任務,如構建,測試和部署軟件。Jenkins能夠經過本機系統包Docker安裝,甚至能夠經過安裝Java Runtime Environment的任何機器獨立運行。git

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

 

2 環境準備shell

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

2.1 環境windows

(1) Gitlab倉庫瀏覽器

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

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

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`
View Code

 

點擊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
View Code

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

 

到這裏,項目配置大概完畢,回到項目首頁,點擊當即構建:

查看日誌:

 構建成功:

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

若是上面Build Triggers webhooks配置成功,那麼只要提交代碼到gitlab,便可自動構建,就不須要人工干預去執行構建操做了。

5 維護

5.1 備份

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

 

點擊Settings,設置Backup directory備份目錄:

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

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

相關文章
相關標籤/搜索