Categories
程式開發

小伙伴想學Jenkins自動構建發布項目,我:安排上了! !


寫在前面

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

小伙伴的疑問

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 1

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

基礎環境

所有的環境均搭建在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啟動成功。

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 2

安裝插件

上述默認安裝的插件還不夠

依次點擊系統管理->插件管理-> 可選插件-> 過濾搜索框中查找如下插件:

Maven集成插件SSH插件部署到容器插件

設置系統管理-Global Tool Configuration

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 3

配置系統管理-Configure Global Security

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 4

註冊並登錄用戶

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 5

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 6

配置SSH遠程主機

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 7

點擊Add按鈕設置登錄方式,如下圖所示:

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 8

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 9

新建項目構建

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 10

配置項目構建

General-配置項目名稱

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 11

源碼管理-配置SVN信息

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 12

配置Pre Steps

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 13

配置Post Steps

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 14

配置完成後保存。

構建項目

回到主頁,點擊立即構建項目按鈕,如下圖:

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 15

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 16

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

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 17

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配置如下:

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 18

構建項目

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 19

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 20

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 21

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,後續我都會持續更新和維護,感謝大家長期以來對冰河的支持! !

寫在最後

如果你覺得冰河寫的還不錯,請微信搜索並關注「 冰河技術」微信公眾號,跟冰河學習高並發、分佈式、微服務、大數據、互聯網和雲原生技術,「 冰河技術」微信公眾號更新了大量技術專題,每一篇技術文章乾貨滿滿!不少讀者已經通過閱讀「 冰河技術」微信公眾號文章,吊打麵試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成為公司的技術骨幹!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術」微信公眾號吧,每天更新超硬核技術乾貨,讓你對如何提陞技術能力不再迷茫!

小伙伴想學Jenkins自動構建發布項目,我:安排上了!  ! 22