阿粉想和你詳細聊聊 Jenkins 配置那些事
本文轉(zhuǎn)載自微信公眾號「Java極客技術(shù)」,作者鴨血粉絲。轉(zhuǎn)載本文請聯(lián)系Java極客技術(shù)公眾號。
這篇文章就結(jié)合阿粉的工作經(jīng)驗,來說說 Jenkins 的那些詳細配置,這些配置主要就是當我們讓 Jenkins 幫我們部署完成之后,需要執(zhí)行的腳本
先說一下,這些配置只是起參考價值,具體還是需要根據(jù)自己的情況來呦~
對于后端來說,配置文件主要在構(gòu)建之后需要執(zhí)行的操作( # 后面為注釋內(nèi)容)
- #!/bin/sh
- tomcat_path=/usr/local/tomcats/tomcat-test #定義 tomcat 的位置
- project_web=$tomcat_path/test.war #定義項目打包位置
- if [ -f $project_web ] ;then
- echo -- stop tomcat
- #kill tomcat pid
- pidlist=`ps -ef | grep tomcat-test | grep -v grep | awk '{print $2}'` #查看是否有進程正在運行
- if [ "$pidlist" = "" ] #沒有進程在運行,則提示
- then
- echo "no tomcat pid alive!"
- else #有進程在運行,殺掉
- echo "tomcat Id list :$pidlist"
- kill -9 $pidlist
- echo "KILL $pidlist:"
- echo "tomcat stop success"
- fi
- echo -- 正在部署$project_web #將進程殺掉之后,重新進行部署
- if [ -f $tomcat_path/webapps/test.war ] ;then #查看 /webapps 目錄下是否有以前的 war 包,如果有,刪掉
- rm -f $tomcat_path/webapps/test.war
- rm -rf $tomcat_path/webapps/test
- echo -- 正在刪除$project_web
- fi
- cp $project_web $tomcat_path/webapps/test.war #將新生成的 war 包復制到 /webapps 目錄下
- # start tomcat
- echo $tomcat_path
- #sleep 5
- export JAVA_HOME=/usr/java/latest
- #$tomcat_path/bin/startup.sh
- ${tomcat_path}/bin/startup.sh
- else
- echo $BUILD_ID - 未找到$project_web
- fi
對于前端來說,主要就是需要注意一下前端特有的打包方式:
- npm install --unsafe-perm
- ng build --prod --env=test --output-path=typing-dev --base-href ./
對于 k8s 來說,需要在構(gòu)建時創(chuàng)建事件:
- #!/bin/sh -l
- examimage_path=reg.afen.com/library/test:1.0.0 #定義鏡像在 harbor 上的位置
- cp test-web/target/test-web.war test-web/src/profiles/k8s_prod/test-web.war #將 war 復制到目標目錄下
- cd test-web/src/profiles/k8s_prod #進入目標目錄
- docker build -t $examimage_path . #開始創(chuàng)建新的鏡像,注意后面還有一個".",要不然命令是不會生效的
- docker push $examimage_path #將構(gòu)建好的鏡像推到 harbor 上面去
- echo '推送鏡像到harbor'
- #刪除本地鏡像
- docker rmi -f $examimage_path #推送成功之后,將本地鏡像刪除
- #k8s部署
- echo '開始部署'
- kubectl delete -f $WORKSPACE/test-web/src/profiles/k8s_prod/. #將本地的都刪除
- echo $WORKSPACE
- kubectl create -f $WORKSPACE/test-web/src/profiles/k8s_prod/. #部署最新的
到這里,阿粉想要分享的內(nèi)容就沒有啦~
在項目中你是如何使用 Jenkins 的呢?