三、jenkins使用tomcat部署項目

一、安裝tomcat

tomcat本來應該是第3臺服務器的(第一臺:gitlab,第二臺:jenkins,第三臺:tomcat),我這里資源有限,就把tomcat安裝jenkins服務器了。

#解壓tocmcat
[root@bogon home]#tar -zxvf apache-tomcat-9.0.80.tar.gz#查看是否解壓成功
[root@bogon home]#ll
drwxr-xr-x.  9 root root      220 7月   2 10:06 apache-tomcat-9.0.80
-rw-r--r--.  1 root root 11692853 7月   2 10:04 apache-tomcat-9.0.80.tar.gz#查看是否可以啟動
[root@bogon home]# cd apache-tomcat-9.0.80/bin/
[root@bogon bin]# ./startup.sh 
Using CATALINA_BASE:   /home/apache-tomcat-9.0.80
Using CATALINA_HOME:   /home/apache-tomcat-9.0.80
Using CATALINA_TMPDIR: /home/apache-tomcat-9.0.80/temp
Using JRE_HOME:        /usr/lib/jvm/java-11-openjdk
Using CLASSPATH:       /home/apache-tomcat-9.0.80/bin/bootstrap.jar:/home/apache-tomcat-9.0.80/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

安裝完tomcat后,jenkins需要使用到tomcat的賬戶,給tomcat傳輸war包。所以我們下面配置

tomcat賬號。如果不配置,啟動tomcat后,點擊manager webapp是無法訪問

?看,無法訪問吧:

二、配置tomcat

(1)修改tomcat-users.xml

配置tomcat用戶,這里tomcat的賬號密碼均是:tomcat

vi /home/apache-tomcat-9.0.80/conf/tomcat-users.xml配置文件如下

[root@localhost conf]# vi /home/apache-tomcat-9.0.80/conf/tomcat-users.xml<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"/>

(2)修改context.xml文件

注釋這一塊,具體干嘛不清楚,待研究,不過目的還是配置tomcat的賬號和密碼的。

[root@localhost META-INF]# vi /home/apache-tomcat-9.0.80/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" /> -->

(3)重啟tomcat

重啟tomcat后,在訪問tomcat的manager

?可以訪問了

三、jenkins的war包部署項目

?現在我們使用jenkins、tomcat2者結合,把war包啟動。但是Jenkins中自動構建項目的類型有很多,常用的有以下三種:
*自由風格軟件項目(FreeStyleProject)
*Maven項目 (Maven Project)
*流水線項目(Pipeline Prgject)|


每種類型的構建其實都可以完成一樣的構建過程與結果,只是在操作方式、靈活度等方面有所區別,在實際開發中可以根據自己的需求和習慣來選擇。(PS:教程里老師推薦使用流水線類型,因為靈活度非常高)

(1)自由風格方式部署

拉取代碼

1、之前我們已經寫過如何拉取代碼和打包了。不再寫了。

注意:因為使用的是自由風格的方式部署,創建項目時要選擇自動項目,就是自帶的那一個。

項目創建好了

安裝插件

2、首先需要jenkins安裝一個插件? :Deploy to container

?

配置插件的使用?

插件安裝完成后,進入項目

點擊構建后操作

?設置war包路徑

注意:截圖里的war/ear files路徑錯了,不用寫全路徑,因為已經是這個項目了,直接這么寫:target/*.war

?點擊添加,設置tomcat(我tomcat在本地)

?

最后build一下,看日志

?看日志如下就是可以了

?然后刷新查看tomcat

注意:這個時候時候已經把war包放在tomcat的webapps目錄下了。

然后點擊項目名字,發現項目已經啟動了

測試人員直接訪問該地址就可以測試了。開發人員提交代碼到gitlab后,測試人員自己點build,就會自動更新了。

測試開發人員修改代碼,然后提交到gitlab。點擊jenkins的build看看代碼是否自動更新且部署成功。

?然后build一下

刷新項目地址,發現已經是最新代碼了。

?(2)maven項目構建類型方式部署

安裝插件

首先我們先安裝一個插件:Maven Integration

?創建項目

獲取代碼

拉取代碼和自由風格方式一樣的

?然后build,看看有沒有拉取成功,看一下服務器有沒有對用項目名就行

?沒問題,拉成功了

打包

這里和自由風格不同,圖里寫錯字了。

讓tomcat加載該war包

build一下,看日志

?看tomcat

訪問項目?

修改代碼,build?

修改代碼。提交

?build后查看項目

查看控制臺日志沒問題

看項目,也更新了。

?(3)流水線方式部署

流水線(pipeline)直接寫代碼即可實現拉取代碼、打包、同步tomcat啟動,這個代碼也是可以自動生成,整體來說沒有上面那2個配置的地方多,流水線只在一個地方寫代碼即可。

流水線(pipeline)的好處:

代碼:peline以代碼的形式實現,通常被檢入源代碼控制,使團隊能夠編輯,審查和迭代其傳送流程。
持久:無論是計劃內的還是計劃外的服務器重啟,Pipeline都是可恢復的。
可停止:Pipeline可接收交互式輸入,以確定是否繼續執行Pipeline。
多功能:Pipeline支持現實世界中復雜的持續交付要求。它支持fork/join、循環執行,并行執行任務的功
能。
可擴展:Pipeline插件支持其DSL的自定義擴展,以及與其他插件集成的多個選項。

如何創建Jenkins Pipeline呢?
Pipeline腳本是由Groovy語言實現的,但是我們沒必要單獨去學習Groovy
Pipeline支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法
Pipeline也有兩種創建方法:可以直接在Jenkins的WebUI界面中輸入腳本;也可以通過創建一個
Jenkinsfile腳本文件放入項目源碼庫中(一般我們都推薦在Jenkins中直接從源代碼控制(SCM)中直接載入Jenkinsfile Pipeline 這種方法)。

安裝插件

安裝pipeline插件

遇到的坑:我安裝該插件,提示我高版本的jenkins才可以下載該插件。然后我吭哧吭哧把jenkins升級為了2.504.3

?

(ps:上面pipeline插件里的部分子插件安裝失敗了,版本太低了,我先試試可以走通流水線項目不,答:走不通,我升級可jenkins版本到2.504.3)?

創建一個流水線項目

嘗試聲明式打印流程

發現流水線和上面2個相比,不需要找配置git、不需要配配置tomcat的地方,直接在這里寫配置git、配置tomcat,下面寫個簡單的打印(只是打印,還沒寫拉取配置的代碼)

pipeline {agent anystages {stage('pull code') {steps {echo '----------------Hello World1'}}stage('build project') {steps {echo '----------------------Hello World2'}}stage('public project') {steps {echo '----------------------------Hello World3'}}}
}

build一下,可以打印。?

?腳本式案例

node {def mvnHomestage('pull code') { // for display purposesecho '拉取'}stage('Build project') {// Run the maven buildwithEnv(["MVN_HOME=$mvnHome"]) {echo '生成'}}stage('publish project') {echo '執行'}
}

然后build一下,發現是有日志打印的。

?聲明式案例

?

聲明式實戰?

1拉取代碼

上面“生成流水線腳本”后,直接拉取代碼,看看能否拉取

?看日志拉取成功

2打包

?

?

生成打包腳本,放進去

?

?build一下,看看日志,沒報錯,然后服務器也生成了war包

?3遠程部署到tomcat

?

?build一下,看看日志,沒問題

?

提交代碼用流水線在build一下,看看項目是不是更新

build一下,項目更新了,流水線部署沒問題,且完成。

4,把構建代碼放在idea里

即使jenkins崩了,idea里也有該代碼。同時也實現了版本控制。

?

5把構架命令放在idea

打開idea,創建一個默認名為Jenkinsfile的文件

?

?設置jenkins

?build,看看成功不。成功

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87989.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為eNSP防火墻實驗(包含詳細步驟)

拓撲圖 這里要用的防火墻是 &#xff0c; 需要導入 目錄 防火墻配置1&#xff08;啟動圖形化界面&#xff09; cloud配置 緩沖區服務器配置 防火墻配置2&#xff08;各端口的ip地址&#xff09; 外部路由器配置 本地路由器配置 防火墻配置3&#xff08;配置安全策略&a…

Linux/Unix線程及其同步(create、wait、exit、互斥鎖、條件變量、多線程)

線程 文章目錄線程I 線程基本概念1、為什么引入線程2、PthreadsII 線程基本操作1、創建線程2、終止線程3、線程ID4、連接已終止線程5、線程基本操作示例III 通過互斥量同步線程1、基本概念2、互斥量&#xff08;Mutex&#xff09;3、靜態分配互斥量4、互斥量鎖定與解鎖5、互斥量…

vue3 el-table 行數據沾滿格 取消自動換行

在 Vue.js 使用 Element UI 或 Element Plus 的 <el-table> 組件時&#xff0c;如果你希望其中的單元格內容不自動換行&#xff0c;可以通過設置 CSS 樣式來實現。這里有幾種方法可以做到這一點&#xff1a;方法1&#xff1a;使用 CSS 樣式你可以直接在 <el-table-col…

操作系統級TCP性能優化:高并發場景下的內核參數調優實踐

在高并發網絡場景中&#xff0c;操作系統內核的TCP/IP協議棧配置對系統性能起著決定性作用。本文聚焦操作系統層面&#xff0c;深入解析內核參數調優策略&#xff0c;幫助讀者構建穩定高效的網絡通信架構。 一、連接管理參數優化&#xff1a;從三次握手到隊列控制 1.1 監聽隊列…

基于物聯網的智能交通燈控制系統設計

標題:基于物聯網的智能交通燈控制系統設計內容:1.摘要 摘要&#xff1a;隨著城市交通流量的不斷增加&#xff0c;傳統交通燈控制方式已難以滿足高效交通管理的需求。本研究的目的是設計一種基于物聯網的智能交通燈控制系統。方法上&#xff0c;該系統利用物聯網技術&#xff0c…

nodejs中使用UDP傳遞信息

什么是UDP?UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是一種無連接的網絡傳輸協議&#xff0c;位于 OSI 模型的傳輸層&#xff08;第四層&#xff09;&#xff0c;與 TCP&#xff08;傳輸控制協議&#xff09;同為互聯網的核心協議之一。它…

App Trace功能實戰:一鍵拉起應用實踐

一、App Trace功能概述App Trace是一種用于監控和分析應用啟動流程的技術&#xff0c;它可以幫助開發者&#xff1a;追蹤應用冷啟動/熱啟動的全過程分析啟動過程中的性能瓶頸優化應用啟動速度實現應用間的快速拉起二、一鍵拉起應用的實現方案1. Android平臺實現方案1&#xff1…

Flink ClickHouse 連接器數據讀取源碼深度解析

一、引言 在大數據處理流程中&#xff0c;從存儲系統中高效讀取數據是進行后續分析的基礎。Flink ClickHouse 連接器為我們提供了從 ClickHouse 數據庫讀取數據的能力&#xff0c;使得我們可以將 ClickHouse 中存儲的海量數據引入到 Flink 流處理或批處理作業中進行進一步的分析…

云原生技術與應用-容器技術技術入門與Docker環境部署

目錄 一.Docker概述 1.什么是Docker 2.Docker的優勢 3.Docker的應用場景 4.Docker核心概念 二.Docker安裝 1.本安裝方式使用阿里的軟件倉庫 2.Docker鏡像操作 3.Docker容器操作 一.Docker概述 因為 Docker 輕便、快速的特性&#xff0c;可以使應用達到快速迭代的目的。每次小…

第2章,[標簽 Win32] :匈牙利標記法

專欄導航 上一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;Windows 數據類型 回到目錄 下一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;兼容 ASCII 字符與寬字符的 Windows 函數調用 本節前言 在初學編程的時候&#xff0c;我們給變量命令的…

從深度學習的角度看自動駕駛

從深度學習的角度看自動駕駛 A Survey of Autonomous Driving from a Deep Learning Perspective 我們探討了深度學習在自主駕駛中的關鍵模塊&#xff0c;例如感知&#xff0c;預測&#xff0c;規劃以及控制。我們研究了自主系統的體系結構&#xff0c;分析了如何從模塊化&…

java+vue+SpringBoo基于Hadoop的物品租賃系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.8 數…

【文獻筆記】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代碼&#xff1a;https://github.com/amazon-research/auto-cot 標題翻譯&#xff1a;大規模語言模型中的自動思維鏈提示 1. 內容介紹 在提示詞中提供思考步驟被稱為思維鏈&#xff08;CoT&#xff09;&…

【Behavior Tree】-- 行為樹AI邏輯實現- Unity 游戲引擎實現

行為樹簡易敵人AI 前言&#xff1a; 有些天沒更新新文章了&#xff0c;主要是最近科一有些頭疼&#xff0c;而且最近琢磨這個行為樹代碼有些難受&#xff0c;但是終于熬出頭了&#xff0c;MonoGame的系列會繼續更新的&#xff0c;今天不說別的就說困擾我兩三天的行為樹 有限狀態…

百度大模型開源,倆條命令、本地啟動

百度大模型開源 本地啟動手冊 安裝依賴&#xff1a; python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ讀取不到ThreadLocal消息的bug

rabbitMQ讀取不到ThreadLocal消息的bug 當使用消息隊列時&#xff0c;監聽隊列不會運行到主線程上&#xff0c;線程消息之間是不會共享的&#xff0c;故屬于主線程的ThreadLocal就讀取不到數據的值 主線程名字&#xff1a;main使用消息隊列的線程名字&#xff1a;ntContainer#2…

IDEA Maven報錯 無法解析 com.taobao:parent:pom:1.0.1【100%解決 此類型問題】

IDEA Maven報錯 無法解析com.taobao:parent:pom:1.0.1【100%解決 此類型問題】 報錯日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函數-1-字符串函數

函數-1-字符串函數字符串函數函數語法字符串函數的使用字符串函數語法案例演示實戰練習字符串函數 函數 函數是一段可以直接被另一端程序調用的程序或代碼 語法 SELECT 函數名(參數名)大家可能會有那么一點點疑惑, 為什么執行函數還需要加上SELECT語句? 總結一下, 因為SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+開箱即用”破壁之道

中國企業的數字化轉型已步入深水區&#xff0c;人力資源管理作為企業核心競爭力的關鍵引擎&#xff0c;正經歷從“信息化”向“智能化”的范式躍遷。在這場以AI為驅動的組織效能革命中&#xff0c;??易路人力資源科技??憑借前瞻性的“軟件AI服務”戰略&#xff0c;推出國內…

Higress離線部署

1.前提條件檢查docker和docker compose是否已經具備 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…