Jenkins部署war包和部署jar包的詳細(xì)步驟
零、配置Tomcat
默認(rèn)情況下Tomcat是沒有配置用戶角色權(quán)限的
但是,后續(xù)Jenkins部署項(xiàng)目到Tomcat服務(wù)器,需要用到Tomcat的用戶,所以修改tomcat以下配置, 添加用戶及權(quán)限
vi /opt/tomcat/conf/tomcat-users.xml # 內(nèi)容如下: <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager-script"/> <role rolename="manager-gui"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
用戶和密碼都是:tomcat 注意:為了能夠剛才配置的用戶登錄到Tomcat,還需要修改以下配置
vi /opt/tomcat/webapps/manager/META-INF/context.xml <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> # 把上面這行注釋掉即可!
重啟Tomcat,訪問測試
輸入 tomcat tomcat
配置Tomcat憑證
一、自由風(fēng)格項(xiàng)目遠(yuǎn)程部署war包
1.創(chuàng)建自由風(fēng)格項(xiàng)目
2.增加構(gòu)建步驟
編譯打包
3.增加構(gòu)建后操作
遠(yuǎn)程部署
4.立即構(gòu)建
5.查看控制臺(tái)輸出
二、創(chuàng)建流水線項(xiàng)目遠(yuǎn)程部署war包
項(xiàng)目選擇為Pipeline流水線項(xiàng)目
,
- 概念
Pipeline,簡單來說,就是一套運(yùn)行在 Jenkins 上的工作流框架,將原來獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)
的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜流程編排和可視化的工作。
- 使用Pipeline有以下好處(來自翻譯自官方文檔):
代碼:Pipeline以代碼的形式實(shí)現(xiàn),通常被檢入源代碼控制,使團(tuán)隊(duì)能夠編輯,審查和迭代其傳送流 程。 持久:無論是計(jì)劃內(nèi)的還是計(jì)劃外的服務(wù)器重啟,Pipeline都是可恢復(fù)的。 可停止:Pipeline可接 收交互式輸入,以確定是否繼續(xù)執(zhí)行Pipeline。 多功能:Pipeline支持現(xiàn)實(shí)世界中復(fù)雜的持續(xù)交付要 求。它支持fork/join、循環(huán)執(zhí)行,并行執(zhí)行任務(wù)的功能。 可擴(kuò)展:Pipeline插件支持其DSL的自定義擴(kuò) 展 ,以及與其他插件集成的多個(gè)選項(xiàng)。
- 如何創(chuàng)建 Jenkins Pipeline呢?
Pipeline 腳本是由 Groovy 語言實(shí)現(xiàn)的,但是我們沒必要單獨(dú)去學(xué)習(xí) Groovy
Pipeline 支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法
Pipeline 也有兩種創(chuàng)建方法:可以直接在 Jenkins 的 Web UI 界面中輸入腳本;也可以通過創(chuàng)建一 個(gè) Jenkinsfile 腳本文件放入項(xiàng)目源碼庫中(一般我們都推薦在 Jenkins 中直接從源代碼控制(SCM) 中直接載入 Jenkinsfile Pipeline 這種方法)。
安裝Pipeline插件 Manage Jenkins->Manage Plugins->可選插件
安裝插件后,創(chuàng)建項(xiàng)目的時(shí)候多了“流水線”類型
1.拉取代碼
配置git倉庫,點(diǎn)擊流水線語法
點(diǎn)擊生成流水線腳本
2.構(gòu)建編譯
pipeline { agent any stages { stage('拉取代碼') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '614e4281-db76-4388-befc-c50588f5e751', url: 'https://gitee.com/L1692312138/ssm_web_war_jenkins.git']]]) } } stage('編譯構(gòu)建') { steps { sh label: '', script: 'mvn clean package -Dmaven.test.skip=true' } } stage('構(gòu)建完成') { steps { echo '構(gòu)建完成' } } stage('遠(yuǎn)程部署') { steps { deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war' } } } post { always { emailext( subject: '構(gòu)建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', body: '${FILE,path="email.html"}', to: '1692312138@qq.com' ) } } }
3.遠(yuǎn)程部署
點(diǎn)擊生成流水線腳本
stage('遠(yuǎn)程部署') { steps { deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war' } }
完整腳本:
pipeline { agent any stages { stage('拉取代碼') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '614e4281-db76-4388-befc-c50588f5e751', url: 'https://gitee.com/L1692312138/ssm_web_war_jenkins.git']]]) } } stage('編譯構(gòu)建') { steps { sh label: '', script: 'mvn clean package -Dmaven.test.skip=true' } } stage('構(gòu)建完成') { steps { echo '構(gòu)建完成' } } stage('遠(yuǎn)程部署') { steps { deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war' } } } post { always { emailext( subject: '構(gòu)建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', body: '${FILE,path="email.html"}', to: '1692312138@qq.com' ) } } }
安裝Pipeline Script from SCM插件
剛才我們都是直接在Jenkins的UI界面編寫Pipeline代碼,這樣不方便腳本維護(hù),建議把Pipeline腳本放
在項(xiàng)目中(一起進(jìn)行版本控制) 1)在項(xiàng)目根目錄建立Jenkinsfile文件,把內(nèi)容復(fù)制到該文件中
2)在項(xiàng)目中引用該文件
點(diǎn)擊構(gòu)建 查看控制臺(tái)輸出
二、部署jar包
1.創(chuàng)建自由風(fēng)格項(xiàng)目
流程 :
增加構(gòu)建后操作步驟,然后配置ssh信息,編寫腳本,然后發(fā)包后執(zhí)行腳本,停止進(jìn)程,在啟動(dòng)進(jìn)程。
2. 安裝Publish Over SSH插件
Publish Over SSH插件
然后配置ssh
3.增加構(gòu)建步驟 編譯打包
4.增加構(gòu)建后操作步驟
配置工程 --》增加構(gòu)建后操作步驟 選擇Sned build artifacts over SSH
Source files 項(xiàng)目構(gòu)建后的目錄
Remove prefix 去前綴
Remote directoty 發(fā)布的目錄
Exec command 發(fā)布完執(zhí)行的命令
5.編寫shell腳本
先通過項(xiàng)目名查找正在運(yùn)行的項(xiàng)目的端口號(hào),如果存在,則殺死該進(jìn)程,
然后再次重啟項(xiàng)目。
shell腳本:
#!/bin/env bash #PID=`ps -ef |grep 項(xiàng)目名稱 |grep -v grep | awk '{print $2}'` PID=`ps -ef |grep 'wxthepublic-1.0-SNAPSHOT.jar' |grep -v grep | awk '{print $2}'` if [ ! "$PID" ] then # 這里判斷TOMCAT進(jìn)程是否存在 echo $PID"進(jìn)程不存在" else echo "進(jìn)程存在 殺死進(jìn)程PID$PID" kill -9 $PID fi nohup java -jar 'wxthepublic-1.0-SNAPSHOT.jar' >/dev/null 2>log & #根據(jù)重啟后是否有當(dāng)前應(yīng)用判斷啟動(dòng)是否成功 pid=$(ps -ef | grep java| grep 'wxthepublic-1.0-SNAPSHOT.jar'|awk -F '[ ]+' '{print $2}') echo $pid if [ -z $pid ] then echo "啟動(dòng)失敗" exit 1 else echo 'wxthepublic-1.0-SNAPSHOT.jar' : $pid "啟動(dòng)成功" fi
6.立即構(gòu)建
點(diǎn)擊立即構(gòu)建,查看控制臺(tái)輸出
目錄下已經(jīng)出現(xiàn)打過的jar包。
到此這篇關(guān)于Jenkins部署war包和部署jar包的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Jenkins部署war包和jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JetBrains 學(xué)生認(rèn)證教程(Pycharm,IDEA… 等學(xué)生認(rèn)證教程)
這篇文章主要介紹了JetBrains 學(xué)生認(rèn)證教程(Pycharm,IDEA… 等學(xué)生認(rèn)證教程)文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09基于Token的身份驗(yàn)證之JWT基礎(chǔ)教程
JWT(json web token)是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)。下面這篇文章主要給大家介紹了關(guān)于基于Token的身份驗(yàn)證之JWT的基礎(chǔ)相關(guān)資料,文中通過示例代碼的非常詳細(xì),需要的朋友可以參考下2018-09-09PHP、JAVA、.NET這三種技術(shù)的區(qū)別分析
這篇文章主要介紹了PHP、JAVA、.NET這三種技術(shù)的區(qū)別分析,本文從多個(gè)方面介紹、對(duì)比了PHP、JAVA、.NET這三種技術(shù),需要的朋友可以參考下2014-08-08VsCode運(yùn)行html界面的實(shí)戰(zhàn)步驟
在VSCode中默認(rèn)編寫的HTML頁面是不能運(yùn)行的,下面這篇文章主要給大家介紹了關(guān)于VsCode運(yùn)行html界面的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10基于chatgpt的微信自動(dòng)回復(fù)功能實(shí)現(xiàn)
這篇文章主要介紹了基于chatgpt的微信自動(dòng)回復(fù)功能實(shí)現(xiàn),微信自動(dòng)回復(fù)基于聊天api的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02