作者:java老兵
轉載自:
https://www.cnblogs.com/wfd360/p/11314697.html
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自動化部署實現原理
基本環境:
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 Tool Configuration (全局工具配置 )
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腳本如下:
#!/bin/bashecho "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`echo 'old Procedure pid:'$pidif [ -n "$pid" ]thenkill -9 $pidfi案例中給出的start.sh腳本如下:
#!/bin/bashexport JAVA_HOME=/usr/java/jdk1.8.0_131echo ${JAVA_HOME}echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar' chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jarecho '--Starting--' cd /home/ldp/app/nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &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/