1. 程式人生 > 其它 >Jenkins自動化部署入門詳細教程

Jenkins自動化部署入門詳細教程

大綱

  【推薦】我憑這三招輕鬆拿到offer.pdf(吐血整理) >>>

  

1.背景

  在實際開發中,我們經常要一邊開發一邊測試,當然這裡說的測試並不是程式設計師對自己程式碼的單元測試,而是同組程式設計師將程式碼提交後,由測試人員測試;

  或者前後端分離後,經常會修改介面,然後重新部署;

  這些情況都會涉及到頻繁的打包部署;

  手動打包常規步驟:

  1.提交程式碼

  2.問一下同組小夥伴有沒有要提交的程式碼

  3.拉取程式碼並打包(war包,或者jar包)

  4.上傳到Linux伺服器

  5.檢視當前程式是否在執行

  6.關閉當前程式

  7.啟動新的jar包

  8.觀察日誌看是否啟動成功

  9.如果有同事說,自己還有程式碼沒有提交......再次重複1到8的步驟!!!!!(一上午沒了)

  那麼,有一種工具能夠實現,將程式碼提交到git後就自動打包部署勒,答案是肯定的:Jenkins

  當然除了Jenkins以外,也還有其他的工具可以實現自動化部署,如Hudson等

  只是Jenkins相對來說,使用得更廣泛。

2.Jenkins伺服器搭建及基本配置

2.1.簡介

  Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。

2.2.Jenkins自動化部署實現原理

  

2.3.Jenkins部署環境

  基本環境:

  1.jdk環境,Jenkins是java語言開發的,因需要jdk環境。

  2.git/svn客戶端,因一般程式碼是放在git/svn伺服器上的,我們需要拉取程式碼。

  3.maven客戶端,因一般java程式是由maven工程,需要maven打包,當然也有其他打包方式,如:gradle

  以上是自動化部署java程式jenkins需要的基本環境,請自己提前安裝好,下面著重講解Jenkins的安裝部署配置。

2.4.Jenkins安裝

  1.下載安裝包jenkins.war

  2.在安裝包根路徑下,執行命令java -jar jenkins.war --httpPort=8080,(linux環境、Windows環境都一樣);

  3.開啟瀏覽器進入連結http://localhost:8080.

  4.填寫初始密碼,啟用系統

  

  5.進入外掛安裝選擇

  這裡建議選擇,推薦安裝的外掛,保證基本常用的功能可以使用。

  

  選擇後,進入外掛安裝頁面

  

  6.設定初始使用者和密碼

  

  7.進入系統,安裝完成

  注意,如果還是進入不了系統,需要稍等一下,或者重新整理頁面,如果還是進入不了,需要重新啟動jenkinds伺服器。

2.5.Jenkins基本配置

2.5.1.系統初始化配置

  

  1.Configure System (系統設定)

  在系統設定這裡,我們只需要設定最後面的一項,配置遠端伺服器地址,

  即我們程式碼最終執行的伺服器地址資訊,就像我們之前手動部署時使用xshell登入Linux伺服器一樣,

  當然這裡是可以配置多臺遠端Linux伺服器的,配置完成後點選儲存即可,為後面我們配置自動化部署做準備,配置如下圖

  

  2.Configure Global Security (全域性安全配置)

  a.配置使用者相關的許可權

  

  b.配置鉤子程式(當用程式碼更新時通知)訪問許可權,避免報403錯誤

  預設是勾選上了的,這裡去掉勾選

  

  3.Global ToolConfiguration (全域性工具配置)

  a.配置maven的全域性settings路徑

  

  b.配置jdk

  

  c.配置git

  

  d.配置maven的安裝路徑

  

  4.配置必要外掛

   主要是檢查如下這兩個外掛是否已安裝

  外掛1:Publish over SSH
  外掛2:Deploy to container Plugin

  

  到這裡,我們配置一個自動化部署的的java程式(springBoot+maven+gitHub),基本必要配置就差不多了,後面配置過程中如果需要在配置。

3.Jenkins自動化部署(springBoot+maven+gitHub)專案

 3.1.Jenkins伺服器上建立專案和配置

  大體步驟:General(基礎配置)--》原始碼管理--》構建觸發器--》構建環境--》構建--》構建後操作

  1.建立一個工程

  

  2.General(基礎配置)

  僅需填寫標準部分,其他可不填寫

  

  3.原始碼管理

  

  上圖中點選“新增”按鈕新增一組賬號和密碼

  

  4.構建觸發器

  

  如上圖:當前專案的回撥地址為:

  http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2

  只要執行這個地址(在瀏覽器上訪問改地址),該專案就會發起一次構建專案,即拉取程式碼打包部署操作,

  在實際中,是由git伺服器回撥改地址,在後面講git伺服器配置時詳細講解 ,

  值得注意的是,如果你是學習測試,使用的是GitHub服務,要確保你的回撥地址已經試外網對映過的,即往外網可以訪問

  5.構建環境(無需配置)

  6.構建

  

  7.構建後操作

  構建後操作的意思是,jar打包好後,要將jar傳送到哪裡去,傳送後去和啟動等

  這裡需要提前在需要部署的伺服器上配置好路徑,寫好啟動和停止專案的指令碼,並設定為可以執行的指令碼,

  其實就是我們平時在Linux上手動部署專案操作的指令碼

  

  案例中給出的stop.sh指令碼如下:

1 #!/bin/bash
2 echo "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"
3 pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
4 echo 'old Procedure pid:'$pid
5 if [ -n "$pid" ]
6 then
7 kill -9 $pid
8 fi

  案例中給出的start.sh指令碼如下:

1 #!/bin/bash
2 export JAVA_HOME=/usr/java/jdk1.8.0_131
3 echo ${JAVA_HOME}
4 echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar' 
5 chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jar
6 echo '-------Starting-------' 
7 cd /home/ldp/app/
8 nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &
9 echo 'start success'

  到此,Jenkinds伺服器配置完成,接下來我還有要配置Linux伺服器和Git伺服器。

3.2.Linux伺服器配置

  在Liux服務上,上傳上文中的兩個指令碼,用於啟動和停止

  

3.3.GitHub伺服器配置

  在GitHub伺服器上的指定專案裡面配置上文中提到的回撥地址

  特別注意:為了保證回撥地址網可以使用,

  我已經將地址:http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2,

  通過花生殼進行外網對映為:http://zhishidi.imwork.net/job/jenkinsSpringBootDemo/build?token=token_demo2

  所以,下面配置的是外網對映地址。

  

  到這裡所有配置搞定,只需修改程式碼,提交到git,然後訪問程式看是否生效。

4.測試

  1.測試程式碼

  

  2.提交程式碼到git,觸發構建

  3.在GitHub伺服器上去看,是否已經觸發

  

  4.在Jenkins的控制檯檢視是否,正在構建

  從下圖中可以看出,正在構建

  

  5.檢視當次構建的控制檯日誌

  

  說明已經啟動成功

  6.檢視Linux伺服器,是否上傳程式碼

  

  7.在Linux上使用命令jps,檢視是否啟動

  

  8.瀏覽器上訪問,看是否能用

  

  說明,已經正常啟動可以使用。

  9.再次確認是否能自動化部署

  修改程式碼,重新提交程式碼,迴圈1到8步檢視。

  如果測試結果是你預期的,那麼自動化部署成功。

5.總結&資料下載

5.1.總結

  自動化部署Jenkins,作為一款工具,有著非常強大的功能,

  上面我們只是講了生產上做Java自動化部署的一個主要流程,

  其他的功能,大家可以參看官方文件:https://jenkins.io/zh/doc/

  但是,本著學習是為了解決生產的原則,

  個人建議,用到Jenkins的什麼功能就學什麼就可以了,

  沒必要把Jenkins的所有功能都學完在使用,

  就如同我們使用word文件一樣,並沒有系統的他word文件學完後,在開始使用,而是用到什麼功能就學習什麼功能!

5.2.相關資料

  1.案例中的原始碼地址:https://github.com/bangbangw/demo01.git

  2.官方文件:https://jenkins.io/zh/doc/

  3.部落格配套視訊:線上學習