寫在前面
趁著十一長假,很多小夥伴都在悄悄學習,有些是為了能夠順利通過面試,進入大廠升職加薪。有些則是為了進一步鞏固和提高自己的專業技能,希望有朝一日能過成為網際網路架構師乃至技術專家。這不,就有小夥伴問我:如何通過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,後續我都會持續更新和維護,感謝大家長期以來對冰河的支援!!