1. 程式人生 > >使用Jenkins部署Springboot專案

使用Jenkins部署Springboot專案

本文主要記錄如何在linux伺服器上安裝Jenkins,並使用jenkins作為持續整合工具將springboot專案部署到遠端伺服器。

一、結構

1.1 伺服器結構

  • 測試機器:若干臺外網測試主機,這裡假設其中某臺的IP地址為114.114.111.111。
  • Jenkins伺服器:搭建在內網的測試主機,Jenkins安裝部署在這臺機器上。
  • SVN或GIT程式碼庫:本次以git為例(SVN同理,只需配好地址,jenkins可以提取程式碼)

1.2 測試環境目錄結構

  • /home/ceiec/BackService/jenkinsWeb: 專案總目錄
  • /home/ceiec/BackService/jenkinsWeb/jenkins-in:jenkins構建好的jar包上傳到此目錄、存放專案啟動的指令碼start.sh
  • /home/ceiec/BackService/jenkinsWeb/WebInsight:專案啟動執行的目錄,存放日誌檔案及歷史構建jar包的備份檔案

1.3 程式碼結構

以WebInsight專案為例

二、整體思路

  • 使用gradle構建專案(maven同理,只需輸入對應打包命令即可)
  • 構建後使用Publish Over SSH(jenkins外掛)部署到遠端伺服器
  • 關閉應用(殺掉之前專案的程序)
  • 備份應用到lastDeploy目錄
  • 上傳新版本的Jar包(或者war包)
  • 啟動應用
  • 其中,關閉、備份、刪除和啟動應用都是由指令碼來完成,所以我寫了一個部署指令碼 start.sh 放在 /jenkins-in下(內容見 相關指令碼
    章節)。
  • Pushlish Over SSH的執行順序是先上傳檔案再執行指令碼,所以對於每個應用每個伺服器可以設定了兩個 Transfer Set ,一個用於執行clean備份,一個用於執行start啟動專案(指令碼可隨意發揮,最終目的就是殺掉之前的專案程序,刪除並備份之前專案程式,開啟新的專案程式

三、Jenkins安裝部署

3.1 下載Jenkins

可以在https://jenkins.io/download/下載Jenkins的最新版本。建議下載LTS(LongTermSuport)。我下載的是 jenkins.war

3.2 在linux伺服器上部署

將下載的jenkins.war上傳到伺服器上,我安裝的目錄是/usr/local/jenkins,目錄結構:

其中,home為jenkins工作目錄,jenkins.sh是為了方便啟動和停止jenkins而寫的指令碼(內容見 相關指令碼 章節),這裡我還將設定成開機啟動服務,設定如下:

  • 給指令碼賦予許可權:chmod 777 /usr/local/jenkins/jenkins.sh
  • 將jenkins.sh連線到/etc/init.d/jenkins:ln -s /usr/local/jenkins/jenkins.sh /etc/init.d/jenkins
  • 新增到chkconfig列表:chkconfig --add jenkins
  • 設定成開機啟動服務:chkconfig --level 345 jenkins on

這時,就可以輸入命令啟動jenkins

  • 啟動jenkins:service jenkins start
  • 關閉jenkins:service jenkins stop
  • 檢視jenkins狀態:service jenkins status

到這裡,jenkins就安裝部署成功了,接下來就可以在web介面配置jenkins。

四、配置jenkins

4.1 訪問jenkins

瀏覽器中輸入172.16.3.35:7076(即安裝部署jenkins伺服器的ip地址,埠號預設是8080,我配置的是7076),頁面出現:

首次訪問jenkins需要輸入管理員密碼,此時可以到伺服器終端控制檯上查詢密碼輸入即可:

接著會提示你選擇要安裝的外掛,選擇“Install suggest Plugins”即可,後續也可到外掛管理中查詢需要的外掛安裝:

外掛安裝完成後,按照提示設定管理員賬號就可以使用了!

4.2 安裝Publish Over SSH 外掛(用於構建成功後將jar包上傳到遠端伺服器並安裝部署)

在 系統設定->外掛管理->可選外掛 搜尋 Publish Over SSH,選中點選立即安裝即可安裝。

4.3 系統配置

在新建任務之前,需要做一些系統配置

  1. 系統管理-系統設定:設定遠端伺服器,點選增加可設定多臺伺服器。

2. 系統管理-全域性工具設定:設定JDK,Git,Gradle工具等(需先在jenkins安裝的伺服器上安裝對應工具,然後填寫其對應執行路徑)

4.4 建立專案

新建任務

原始碼管理:輸入專案的git路徑,點選Credentials對應的Add可以輸入git賬號密碼,Branches to build為對應的分支

構建觸發器:該部分可以選擇定時構建,即可以設定日程,例如設定每天晚上8點構建等等,這裡我暫時不需要。

構建:這裡可以通過shell命令來執行構建(這裡有個坑,從git上拉下來的專案程式碼本身在一個資料夾下(git不能直接拉子目錄),直接執行gradle命令會導致找不到命令,所以可以通過shell命令先cd到工程目錄下,然後在執行gradle命令,如果還是報錯找不到命令,就輸入gradle執行的絕對路徑),下圖指令碼就是先切換到專案根目錄下,然後執行gradle命令進行打包。

構建後操作:構建後可以執行很多操作,例如傳送郵件通知,傳送程式碼審查報告,傳送檔案到遠端部署等,下面我們使用上面安裝的Publish Over SSH外掛將構建好的jar包傳送到遠端伺服器上進行部署

1. 選擇上面配置好的遠端伺服器;

2. source files:要上傳的檔案,此路徑填寫的是相對與jenkins該任務工作空間的相對路徑,這裡要上傳的jar包在專案根路徑下的build/libs路徑下;

3. Remove prefix:上傳時要去除的資料夾,即只上傳jar包;

4. Remote directory:遠端伺服器的路徑,即上傳的jar包的儲存路徑;

5. Exec command:要執行的命令指令碼,這裡執行的是事先已經編輯好的start.sh指令碼,指令碼中就是備份部署等命令,見下指令碼。

到這裡,該任務就建立成功了,點選立即構建,就可以實現專案的構建部署了。

4.5 相關指令碼

1. jenkins.sh:jenkins的部署指令碼

2. start.sh:jar包部署指令碼