当前位置: 首页 > 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.dtcms.com/a/266592.html

相关文章:

  • RK-Android11-性能优化-限制App内存上限默认512m
  • 利用TCP协议,创建一个多人聊天室
  • 使用reactor-rabbitmq库监听Rabbitmq
  • Go中使用Google Authenticator
  • 东软8位MCU低功耗调试总结
  • 如何使用python识别出文件夹中全是图片合成的的PDF,并将其移动到指定文件夹
  • 【ASP.NET Core】REST与RESTful详解,从理论到实现
  • 当前主流AI智能代理框架对比分析报告
  • 分布式光伏监控系统防孤岛保护装置光功率预测
  • 【论文阅读】VARGPT-v1.1
  • Webpack构建工具
  • node.js下载教程
  • 机器学习数学基础与Python实现
  • 机器学习在智能建筑中的应用:能源管理与环境优化
  • 每日问题总结记录
  • 一、如何用MATLAB画一个三角形 代码
  • 基于AR和SLAM技术的商场智能导视系统技术原理详解
  • 京东小程序JS API仓颉改造实践
  • 深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效
  • 【centos8服务如何给服务器开发3306端口】
  • Python 中线程和进程在实际项目使用中的区别和联系
  • 解决HttpServletRequest无法获取@RequestBody修饰的参数
  • Java并发性能优化|读写锁与互斥锁解析
  • Python 中的可迭代对象与迭代器:原理与项目实战
  • 【Verilog】parameter、localparam和 `define的区别
  • Android View的绘制原理详解
  • 基于虚拟化技术的网闸安全交换:物理隔离时代的智能数据流通引擎
  • 最快实现的前端灰度方案
  • python打卡day58@浙大疏锦行
  • 算法19天|回溯算法:理论基础、组合、组合总和Ⅲ、电话号码的字母组合