小夥伴想學Jenkins自動構建釋出專案,我:安排上了!!

冰河團隊發表於2020-10-06

寫在前面

趁著十一長假,很多小夥伴都在悄悄學習,有些是為了能夠順利通過面試,進入大廠升職加薪。有些則是為了進一步鞏固和提高自己的專業技能,希望有朝一日能過成為網際網路架構師乃至技術專家。這不,就有小夥伴問我:如何通過Jenkins自動構建和釋出專案,我:安排上了!!

小夥伴的疑問

我們還是通過一張圖來直觀的瞭解下小夥伴的疑問吧。

老規則,我們直接進入正題。

基礎環境

所有的環境均搭建在CentOS 6.5 x64伺服器上,IP:192.168.209.121 主機名:liuyazhuang121 , 並在伺服器上配置了主機名到IP的對映。

構建Web專案

環境配置

首先,我們來看下如何通過Jenkins自動構建釋出Web專案到遠端Tomcat。我們使用的環境是:Jdk1.8+Maven3.6.3+Tomcat9.0+Jenkins2.19.3+SSH+Shell

其中,JDK、Maven和Tomcat小夥伴們可以自行下載安裝並配置系統環境,可以到連結http://download.csdn.net/download/l1028386804/10127368 下載jenkins2.19.3。

配置SSH免密碼登入

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys/

配置Jenkins

啟動Jenkins

下載的Jenkins war包拷貝到${TOMCAT_HOME}/webapp目錄下,並啟動Tomcat,在瀏覽器中輸入http://192.168.209.121:8080/jenkins,如下圖所示,則證明Jenkins啟動成功。

安裝外掛

上述預設安裝的外掛還不夠

依次點選 系統管理->外掛管理-> 可選外掛-> 過濾搜尋框中 查詢如下外掛:

  • Maven Integration plugin
  • SSH plugin
  • Deploy to container Plugin

設定系統管理-Global Tool Configuration

在系統管理-Global Tool Configuration中配置JDK和Maven,如下:

配置系統管理-Configure Global Security

註冊並登入使用者

配置SSH remote hosts

在系統管理-系統設定,配置SSH remote hosts

點選Add按鈕設定登入方式,如下圖所示:

點選Check connection按鈕 ,如果頁面上輸出Successfull connection,則SSH配置成功,如下圖所示:

新建專案構建

配置專案構建

General-配置專案名稱

原始碼管理-配置SVN資訊

配置Pre Steps

配置Post Steps

配置完成後儲存。

構建專案

回到主頁,點選立即構建專案按鈕,如下圖:

可看到頁面上出現對maven_test的構建進度條,點選進度條即可進入日誌輸出頁面,如下圖:

輸出如下日誌,則代表構建並部署到tomcat成功。

tomcat.sh指令碼

最後,我們給出tomcat.sh指令碼的內容,如下所示。

#!/bin/sh  
  
## java env  
## service name    
SERVICE_NAME=tomcat_service  

case "$1" in  
  
    start)  
         /usr/local/tomcat/test-tomcat-10000/bin/startup.sh 
        ;;  
  
    stop)  
        sleep 5  
        ##  
        ## edu-service-aa.jar  
        ## edu-service-aa-bb.jar  
        P_ID=`ps -ef | grep -w "test-tomcat-10000" | grep -v "grep" | awk '{print $2}'`  
        if [ "$P_ID" == "" ]; then  
            echo "=== $SERVICE_NAME process not exists or stop success"  
        else  
            echo "=== $SERVICE_NAME process pid is:$P_ID"  
            echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"  
            kill  $P_ID  
        fi  
        ;;  
  
    restart)  
        $0 stop  
        sleep 2  
        $0 start  
        echo "=== restart $SERVICE_NAME"  
        ;;  
  
    *)  
        ## restart  
        $0 stop  
        sleep 2  
        $0 start  
        ;;  
  
esac  
exit 0 

構建Java專案

Jenkins構建Jar包釋出到遠端伺服器和構建War包釋出到遠端伺服器配置基本一致,只是Post Steps配置稍有不同。

配置Post Steps

配置Jar包釋出到遠端伺服器的Post Steps配置如下:

構建專案

account-server.sh指令碼

最後,我們也給出account-server.sh指令碼的內容,如下所示。

#!/bin/sh  
  
## java env  
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144  
export JRE_HOME=$JAVA_HOME/jre  
  
## service name  
APP_NAME=account  
  
SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME  
SERVICE_NAME=medcare-dubbo-$APP_NAME  
JAR_NAME=$SERVICE_NAME\.jar  
PID=$SERVICE_NAME\.pid  
  
cd $SERVICE_DIR  
  
case "$1" in  
  
    start)  
        nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &  
        echo $! > $SERVICE_DIR/$PID  
        echo "=== start $SERVICE_NAME"  
        ;;  
  
    stop)  
        kill `cat $SERVICE_DIR/$PID`  
        rm -rf $SERVICE_DIR/$PID  
        echo "=== stop $SERVICE_NAME"  
  
        sleep 5  
        ##  
        ## edu-service-aa.jar  
        ## edu-service-aa-bb.jar  
        P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`  
        if [ "$P_ID" == "" ]; then  
            echo "=== $SERVICE_NAME process not exists or stop success"  
        else  
            echo "=== $SERVICE_NAME process pid is:$P_ID"  
            echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"  
            kill -9 $P_ID  
        fi  
        ;;  
  
    restart)  
        $0 stop  
        sleep 2  
        $0 start  
        echo "=== restart $SERVICE_NAME"  
        ;;  
  
    *)  
        ## restart  
        $0 stop  
        sleep 2  
        $0 start  
        ;;  
  
esac  
exit 0  

重磅福利

微信搜一搜【冰河技術】微信公眾號,關注這個有深度的程式設計師,每天閱讀超硬核技術乾貨,公眾號內回覆【PDF】有我準備的一線大廠面試資料和我原創的超硬核PDF技術文件,以及我為大家精心準備的多套簡歷模板(不斷更新中),希望大家都能找到心儀的工作,學習是一條時而鬱鬱寡歡,時而開懷大笑的路,加油。如果你通過努力成功進入到了心儀的公司,一定不要懈怠放鬆,職場成長和新技術學習一樣,不進則退。如果有幸我們江湖再見!

另外,我開源的各個PDF,後續我都會持續更新和維護,感謝大家長期以來對冰河的支援!!

相關文章