三、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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…