1. 程式人生 > >jenkins+maven+svn實現springboot專案的自動化部署過程

jenkins+maven+svn實現springboot專案的自動化部署過程

前言
     在安裝之前,我想說明一下本文的目的,jenkins的一款持續整合工具,
     它可以做的事情很多,其中一個主要的功能就是簡化部署流程
   
     回想一下我們的釋出流程:
          1.本地把專案打包
          2.通過FTP等工具,傳輸到伺服器
          3.然後到專案根目錄下執行可執行jar, java -jar xxxxxx.jar

     如果每次都這麼搞的話,不僅慢,而且容易出錯。
   
     有了jenkins以後,釋出流程可以是這樣:
          1.使用者在jenkins上點選某個按鈕進行釋出
          2.jenkins收到釋出命令
          3.jenkins從SVN上把原始碼download下來
          4.jenkins根據你設定的mvn命令進行打包
          5.jenkins把你打包的好的可執行jar工程通過SSHserver傳輸到伺服器工作目錄下
          6.自動執行shell指令碼啟動專案
 
     對於程式設計師而言,只要做兩件事:
          1.在jenkins上配置某個專案的部署流程
          2.在jenkins上點選某個專案的部署按鈕,進行一鍵部署
     
     實際上,配置往往只做一次,其餘的時候,你只要一鍵部署就可以了

 

第一步,搭建svn資源伺服器,可以參考我的另一篇部落格

linux下搭建SVN伺服器

 

第二步, 搭建jenkins環境,可以參考我的另一篇部落格

centos7下jenkins安裝

 

第三步,jenkins安裝外掛

     1 , 安裝maven外掛

    

2 , 安裝svn外掛

  

3 , 安裝deploy外掛

deploy外掛安裝完成後,會在專案構建配置中出現Send build artifacts over SSH 選項

第四步, 配置jdk,maven,publish SSH server

 1 , publish SSH server , passphrase 為密碼授權

    

2, jdk and  maven 

這裡在配置maven本地倉庫的時候, 可能會遇到無法從遠端倉庫下載jar包到本地倉庫,研究了半天發現是jenkins根據maven配置檔案去下載jar包的時候需要在伺服器上建立檔案目錄.  但是jenkins預設的使用者並沒有許可權在linux建立目錄, 解決方法把jenkins的使用者設定為linux的root使用者,就可以成功建立本地倉庫了.

 vi  /etc/sysconfig/jenkins   可以配置jenkins的使用者和埠  

第五步 , 設定專案構建,按截圖順序設定

構建後操作, 如果打的是pom檔案, 則exec command為

echo "======$JOB_NAME"
echo "======$JOB_BASE_NAME"
echo "======$NODE_NAME"

如果打的是可執行jar包,則exec command 為:

BUILD_ID=DONTKILLME
source /etc/profile
PJ_DIR=mgt-franchise
FILE_NAME=`ls /work/update/$PJ_DIR -t | awk '{print $1}' | head -1`

echo "--find filename: $FILE_NAME"
CURR_DATE=`date "+%Y%m%d%H%M%S"`
cd  /work/services/
tar -zcf /work/backup/$PJ_DIR/$CURR_DATE.gz $PJ_DIR*/*
rm -rf /work/services/$PJ_DIR*
tar -zxf /work/update/$PJ_DIR/$FILE_NAME -C /work/services
APP_DIR=/work/services/${FILE_NAME%-*}
echo "--app dir: $APP_DIR"
$APP_DIR/bin/restart.sh test

到此,jenkins一鍵自動化部署的過程就結束了,自動部署的時候需要一定的shell指令碼編寫能力,以後有時間再慢慢研究...  

 

linux consul安裝和啟動

unzip consul_0.6.4_darwin_amd64.zip

sudo scp consul /usr/local/bin

consul agent -client -dev 

consul members 

最後,記一次我在用springcloud+consul做分散式服務遇到的一個問題, 我們的專案是用consul來做分散式服務註冊和治理的,所以專案啟動的時候需要連線consul服務 , 我開始是用server的方式啟動consul

 consul agent -server -bootstrap -advertise 127.0.0.1 -data-dir ./data -client 192.168.1.142 -ui

-client引數設定客戶端應用連線consul服務的地址,但consul肯定是以伺服器模式啟動的