jenkins+maven+tomcat項目自動部署

操作環(huán)境

OS centos7.3
JDK jdk1.8
maven maven3


當(dāng)然這篇文章的前提是你已經(jīng)在服務(wù)器上安裝部署了jenkins,如果沒有可以看我的另一篇文章
http://www.itdecent.cn/p/ebeebcb8aafb
首先列出所用到的所有命令,并予以解釋

#jenkins 啟動
systemctl start jenkins
#jenkins 停止
systemctl stop jenkins
#jenkins 重啟
systemctl restart jenkins
#更改相關(guān)jenkins服務(wù)文件后 需要執(zhí)行重新加載服務(wù)的命令
systemctl daemon-reload
#創(chuàng)建系統(tǒng)用戶命令
useradd username
#更改文件夾組權(quán)限
chown -R username:username  xxx

進(jìn)入正文

步驟: 安裝必要的插件 => 設(shè)置jenkins全局變量 => 更改運行用戶 => 創(chuàng)建任務(wù) => 配置任務(wù) => 編寫shell腳本 =>Run

1、 安裝必要插件

直接運行jenkins后,打開http:/你的IP:設(shè)置的端口/pluginManager/ 即 系統(tǒng)管理 => 管理插件


插件管理界面

在搜索框分別輸入,有如下作用的插件進(jìn)行安裝

#maven編譯插件
Maven Integration 
#構(gòu)建后腳本執(zhí)行插件
PostBuildScript Plugin 
#subversion插件
Subversion Plug-in

2、 設(shè)置jenkins全局變量

jenkins在創(chuàng)建任務(wù)時需要一些全局變量 對應(yīng)svn地址的svn賬號密碼 JDK路徑 maven路徑
此項可以留到配置任務(wù)環(huán)節(jié)再進(jìn)行

3、更改jenkins在操作系統(tǒng)運行的用戶

這一步是為了為后面編寫shell腳本,提供足夠的權(quán)限;提高系統(tǒng)安全性。

#使用useradd命令創(chuàng)建一個系統(tǒng)用戶
useradd userjs
#停止jenkins服務(wù)
systemctl stop jenkins
# 打開配置文件
$ vi /etc/sysconfig/jenkins 
# 修改$JENKINS_USER變量為userjs
JENKINS_USER="userjs" 

#修改Jenkins相關(guān)文件夾用戶權(quán)限(必須修改)
$ chown -R userjs:userjs /var/lib/jenkins
$ chown -R userjs:userjs /var/log/jenkins
$ chown -R userjs:userjs /var/cache/jenkins
#更改相關(guān)jenkins服務(wù)文件后 需要執(zhí)行重新加載服務(wù)的命令(這一步非必須得視情況而定)
systemctl daemon-reload
#jenkins 啟動
systemctl start jenkins

4、 創(chuàng)建任務(wù)

在瀏覽器打開你的jenkins界面,點擊左側(cè)的 新建任務(wù) 進(jìn)入新建任務(wù)頁


新建任務(wù)頁

輸入任務(wù)名稱(最好英文)
點擊 構(gòu)建一個maven項目
點擊確定按鈕
創(chuàng)建任務(wù)完成

5、配置任務(wù)

在配置任務(wù)界面可以看到一排tab切頁


任務(wù)配置界面

這里紅色箭頭的都是重點關(guān)注的,其他先可以不用關(guān)注
下面就開始一步步配置

①General
設(shè)置構(gòu)建丟棄
②源碼管理
源碼管理

這個地方需要注意了,如果你是第一次配置的話,需要在c步驟點擊按鈕去另外的界面添加,你要拉取的項目的svn賬號密碼信息


全局變量

然后,在b步驟里面選擇你剛剛添加的那個條目

③Build

構(gòu)建這個環(huán)節(jié)是比較重要的,這里我們分兩種類型的示例
a:單模塊項目 b多模塊聚合項目

b:整個項目就一個pom.xml文件
b:整個項目有多個pom.xml文件 通常的文件構(gòu)造如下
多模塊聚合項目

分情況配置

a
單模塊項目編譯配置
b
多模塊聚合項目

這里只需要配置 聚合項目的父級pom即可,因為父級項目里面指定了其他模塊,所以maven會按照pom指定的順序去編譯

④構(gòu)建后操作
選擇構(gòu)建后操作步驟

選擇腳本方式

添加generic shell腳本文件路徑以及觸發(fā)事件

現(xiàn)在我們還沒寫腳本,所以,可以先寫一個路徑例如/opt/script/test.sh

6、編寫shell腳本*****重點

現(xiàn)在相當(dāng)于準(zhǔn)備好了前4步,滴5步只有一半
準(zhǔn)備好了前4步,就相當(dāng)于 我們在利用jenkins 在服務(wù)器/var/lib/jenkins/workspace/你的項目名
拉取了一個svn項目 ,并且,利用maven編譯 先后執(zhí)行了 mvn clean 和mvn install 生成了xxx.war文件

需求點

在這一步我們要做的事情是,將這個新生成的war文件放到服務(wù)器上指定的tomcat下面,然后啟動tomcat服務(wù)器,完成自動部署

首先我們來用文字分解一下這個步驟,再進(jìn)行腳本的編寫

①停止正在運行中的tomcat

停止tomcat相信大家都會,但是由于各種原因tomcat原生的shutdown.sh可能經(jīng)常不能關(guān)閉掉tomcat自己本身,所以需要我們?nèi)ゼ狱c料,詳細(xì)見我的另一篇文章http://www.itdecent.cn/p/39a2da8db269

②將jenkins工具幫我們生成的war放到指定的tomcat下

這一步又可以分解一下,因為tomcat下是會有舊war的存在,這就需要我們?nèi)浞葸@個,然后再刪除,最后換新:

a.將原有war移動到指定的目錄下備份,一般存一份即可
b.刪除舊war
c.將新生成的war移動到tomcat webapps下
③啟動tomcat

執(zhí)行tomcat的startup.sh
好的,正常情況下就是這些步驟了,但是按照這個寫的腳本可不一定能夠正常實現(xiàn)我們的訴求

重要 可能會出現(xiàn)的情況

以我們現(xiàn)在配置的userjs用戶的權(quán)限,可能不能去執(zhí)行我們寫的腳本,理由很簡單 這個用戶沒有權(quán)限,當(dāng)然給他放大一些權(quán)限也是可以的,但是我們生產(chǎn)環(huán)境肯定不能這么做的,我們需要一個解決方案,讓我們這個用戶暫時對某些文件擁有超級權(quán)限
說的有點多了,接下來開始放上我的腳本

#!/bin/sh
sh /usr/local/tomcat8/bin/shutdown.sh
echo "執(zhí)行完tomcat8關(guān)閉?。?!"
cp /var/lib/jenkins/workspace/xxx/target/xxx.war /usr/local/tomcat8/webapps/
if [ -f "/usr/local/tomcat8/webapps/xxx.war" ];then
   echo "xxx.war到/var/tomcat8_bak/"
   \cp /usr/local/tomcat8/webapps/xxx.war /opt/tomcat8_bak/
      if [ -d "/usr/local/tomcat8/webapps/xxx/" ];then
         rm -rf /usr/local/tomcat8/webapps/xxx/
         rm -rf xxx.war
         echo "已刪除tomcat下xxx相關(guān)"
      else
         echo "tomcat下沒有xxx相關(guān)"
      fi
else
   echo "xxx.war文件不存在不能正常備份"
   if [ -d "/usr/local/tomcat8/webapps/xxx/" ];then
      rm -rf /usr/local/tomcat8/webapps/xxx/
      echo "已刪除tomcat下xxx相關(guān)"
   else
      echo "tomcat下沒有xxx相關(guān)"
   fi
fi
sh /usr/local/tomcat8/bin/startup.sh && tail -f /usr/local/tomcat8/logs/catalina.out

這個文件就可以實現(xiàn)將新生成的war放到指定tomcat下,備份舊war
接下來還有最后一件很重要的事情
為jenkins的宿主用戶userjs指定可以運行我們這個腳本的超級權(quán)限

#給予我們這個userjs 運行我們腳本的所有權(quán)限
#進(jìn)入sudo編輯文件
visudo
#添加如下內(nèi)容 寫上你腳本的路徑,兩個腳本的話用逗號隔開注意中英文切換,一個腳本的話只取第一個逗號之前的內(nèi)容
##jenkins
userjs  ALL=NOPASSWD: /opt/tomcat1.sh,NOPASSWD: tomcat2.sh,

OK,還有最后一步 將我們寫好的sh配置到第5步的構(gòu)建后腳本路徑那里,內(nèi)容為

sudo /opt/tomcat1.sh

7、Run

點擊立即構(gòu)建 左下角就會出現(xiàn)進(jìn)度條 點擊進(jìn)度條旁邊的查看控制臺信息,就能看到腳本輸出的信息


test任務(wù)

最后 在具體操作中還有什么問題的話,或者文中的錯誤之處可以在下面評論區(qū)指出,參考的文章太多了,所以來源就不寫了,這個里面80%的內(nèi)容屬于原創(chuàng),轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容