当前位置: 首页 > news >正文

三、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.lryc.cn/news/580192.html

相关文章:

  • 【开源品鉴】FRP源码阅读
  • LangChain 全面入门
  • 数据结构入门:链表
  • 服务器的IO性能怎么看?
  • 数据库11:MySQL 库的操作、库的说明与表的操作、表的说明
  • 电机转速控制系统算法分析与设计
  • 微信小程序如何实现再多个页面共享数据
  • 达梦数据库DMHS介绍及安装部署
  • vue/微信小程序/h5 实现react的boundary
  • 使用Spring AOP实现@Log注解记录请求参数和执行时间
  • Linux基础 -- NAND Flash UBIFS基础特性及注意点
  • Adobe Illustrator设置的颜色和显示的颜色不对应问题
  • 新手快速入门Luban+Unity使用
  • OneCode 智能化UI布局与定位:注解驱动的视觉编排艺术
  • 打通线上线下会议室联动的综合解决方案及技术选型
  • Echarts3D柱状图-圆柱体-文字在柱体上垂直显示的实现方法
  • D3 面试题100道之(21-40)
  • 如何查看自己电脑的CUDA版本?
  • 服务器间接口安全问题的全面分析
  • 学习者的Python项目灵感
  • 本地区块链服务在物联网中的应用实例
  • Rust+Blender:打造高性能游戏引擎
  • OneCode图生代码技术深度解析:从可视化设计到注解驱动实现的全链路架构
  • golang 中当 JSON 数据缺少结构体(struct)中定义的某些字段,会有异常吗
  • 【HDMI CEC】 设备 OSD 名称功能详解
  • Rust match 控制流结构
  • 从0开始学习R语言--Day38--辛普森多样性指数
  • 重学前端002 --响应式网页设计 CSS
  • 【网络安全基础】第三章---公钥密码和消息认证
  • <tauri><rust><GUI>使用tauri创建一个文件夹扫描程序