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

Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署

目录

环境准备

导入项目包

配置jenkins

构建项目 

配置项目上线

修改项目代码测试 


环境准备

本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830

首先在node01主机中操作,本次操作需要java8的版本,将之前安装的java17卸载

Java Downloads | Oracleicon-default.png?t=N7T8https://www.oracle.com/java/technologies/downloads/?er=221886#java8

#卸载之前17版本
[root@node01 ~]# yum remove -y java
#下载jdk8
[root@node01 ~]# wget -O jdk-8u411.rpm https://download.oracle.com/otn/java/jdk/8u411-b09/43d62d619be4e416215729597d70b8ac/jdk-8u411-linux-x64.rpm?AuthParam=1720715155_db3de5003585c6f38ce0b8e87c922e4b
[root@node01 ~]# yum install -y jdk-8u411.rpm[root@node01 ~]# java -version
java version "1.8.0_411"
Java(TM) SE Runtime Environment (build 1.8.0_411-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.411-b09, mixed mode)

Index of apache-local/tomcaticon-default.png?t=N7T8https://mirrors.huaweicloud.com/apache/tomcat/

#下载tomcat8
[root@node01 ~]# wget https://mirrors.huaweicloud.com/apache/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
[root@node01 ~]# tar -zxvf apache-tomcat-8.5.100.tar.gz
[root@node01 ~]# mv apache-tomcat-8.5.100 /usr/local/tomcat

修改tomcat配置

[root@node01 ~]# vim /usr/local/tomcat/webapps/docs/META-INF/context.xml

 

[root@node01 ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml

[root@node01 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml

 

[root@node01 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml<role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="admin-gui"/><role rolename="admin-script"/><user username="admin" password="123456" roles="tomcat,manager-gui,manager-script,admin-gui,admin-script"/>

记住这个用户名admin  密码123456  这里定义好了登录tomcat管理页面的账户  

启动tomcat验证 

[root@node01 ~]# /usr/local/tomcat/bin/startup.sh

 

导入项目包

来到gitlab服务主机的web页面,登录后导入项目

Git仓库URL 

https://gitee.com/hyunze/easy-springmvc-maven

点击导入后等待一会即可完成

将jenkins服务主机的公钥复制,到gitlab平台里

[root@jenkins .ssh]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxUu9J87S1IP7fKfcjbQGJe4KNpMbVz8NfRXibyzLprGwkdPcLZL0nQGKfHiUKroO/yehztlyya/eziwpJposnzkTcY2qbUDQHNoFaY0h1sRhvtJGjdZcwvgi0QHdbv4dp/YxthMx8+UtXmXaDyBrG1ezjcON2pRSnWpUSVL9HatbC6lnhn2q5U2U790ggt2JqjeCGpRQBgusS6Xq5D+HXZfPFvCJK71N3OEBqyuf5jysLMLdRQtawck/nCeU8sTQbHVl85+oPZ5FjuX++GBqTdCdZFcWMx/8qTNaux2ctJmW9Arx2h3SgESwIEsxE3+DhyoE+88FyNdtE752Ms0JWypNGW+XVoFVyFFd8luHTQSHKmN2kMZs1Qq+8XWZHz1LgD5fOvsiGyw2ei/dI1HrhZzyVG+YpkZFxAf3GyIC8YWeu7tvcbE8z83jI9XQYUSAWg6UE4ifkVy+7QB/Su0RK2Re3hIj7tvgYxV0WOVe0/+ZB/up576xnyemeWx2LBIc= root@jenkins

 

 

配置jenkins

来到jenkins主机的web页面,确保下载了这两个插件,没有则下载

Maven Integration plugin

Deploy to container Plugin

来到jenkins主机下载部署jdk8的版本,因为本项目打包需要用到jdk8

[root@jenkins ~]# wget -O jdk-8u411.rpm https://download.oracle.com/otn/java/jdk/8u421-b09/d8aa705069af427f9b83e66b34f5e380/jdk-8u421-linux-x64.rpm?AuthParam=1721458472_cbb2875b7eee184c7878c44b44975d71
[root@jenkins ~]# yum install -y jdk-8u411.rpm

 安装目录在/usr/lib/jvm/jdk-1.8.0_421-oracle-x64

maven和git也已经预装过了在之前的环境里。

现在来到jenkins的web页面,修改java配置

构建项目 

在gitlab页面复制仓库的连接,粘贴进jenkins的配置里。

回到jenkins页面 

 

 

在jenkins主机工作空间中查看war包

[root@jenkins maven-project]# ll /root/.jenkins/workspace/maven-project
total 44
-rw-r----- 1 root root 35181 Jul 12 05:50 LICENSE
-rw-r----- 1 root root    99 Jul 12 05:50 README.md
-rw-r----- 1 root root  3062 Jul 12 06:27 pom.xml
drwxr-x--- 3 root root    18 Jul 12 05:50 src
drwxr-x--- 7 root root   148 Jul 12 06:38 target[root@jenkins maven-project]# ll target/
total 4680
drwxr-x--- 3 root root      20 Jul 12 06:32 classes
drwxr-x--- 4 root root      72 Jul 12 06:38 easy-springmvc-maven
-rw-r----- 1 root root 4788840 Jul 12 06:38 easy-springmvc-maven.war
drwxr-x--- 3 root root      25 Jul 12 06:06 generated-sources
drwxr-x--- 2 root root      28 Jul 12 06:38 maven-archiver
drwxr-x--- 3 root root      35 Jul 12 06:06 maven-status

这里面就已经有了打好的war包,就成功构建并打包了。 

配置项目上线

来到jenkins的web页面,继续增加maven-project任务的配置

 

 设置好后点立即构建,然后看到正确输出即可。

来到项目上线的主机,到tomcat管理页面查看

管理页面需要登录,安装时配置的tomcat的用户名和密码

 

这里就看到自动打包并上线的项目了。 

这里使用的项目的用户名和密码,在其代理里定义的,用户名:admin   密码:admin  输入后登录即可。

修改项目代码测试 

来到gitlab用户页面使用管理员用户登录,进修修改代码,并提交测试

 

刷新即可看到更改后的文字

回到jenkins页面,点击立即构建

来到tomcat页面查看,此时可以看到登录页标题发生了改变,即完成了一次构建,自动拉取,打包,上线。

相关文章:

Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署

目录 环境准备 导入项目包 配置jenkins 构建项目 配置项目上线 修改项目代码测试 环境准备 本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830 首先在node01主机中操作&#xff0c;本次操作需要java8的版本&#xff0c;将之前安装的java17卸…...

Synchronized升级到重量级锁会发生什么?

我们从网上看到很多&#xff0c;升级到重量锁的时候不会降级&#xff0c;再来线程都是重量级锁 今天我们来实验一把真的是这样的吗 1.首选导入Java对象内存布局的工具库&#xff1a; <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-…...

【Webpack】HMR 热更新

HMR全称Hot Module Replacement&#xff0c;可以理解为模块热替换&#xff0c;指在应用程序运行过程中&#xff0c;替换、添加、删除模块&#xff0c;而无需重新刷新整个应用。 不使用热更新&#xff0c;我们在应用运行过程中修改了某个模块&#xff0c;通过自动刷新会导致整个…...

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…...

PotatoTool 蓝队版 V1.3 发布:增强功能和性能优化

一、简介 经过广大网友的反馈和建议&#xff0c;我们对V1.1版本中存在的问题进行了优化。其中&#xff0c;我们针对MD5库进行了本地化处理&#xff0c;以提高查询效率。然而&#xff0c;这也导致了软件体积的飙升。二、优化概述 1、兼容性 兼容arm架构系统 2、UI 2.1 界面…...

pytest常用命令行参数解析

简介&#xff1a;pytest作为一个成熟的测试框架&#xff0c;它提供了许多命令行参数来控制测试的运行方式&#xff0c;以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止&#xff0c;以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …...

pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份&#xff0c;随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的&#xff0c;每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残&#xff0c;解决摧残的方法就是把命令…...

【3D编程技巧】如何用四元数旋转矢量在相机空间进行光照计算

这里介绍一个小TIPS&#xff0c;很久没有这么有成就感了。我以前在学3D数学的时候&#xff0c;书上就有一句话&#xff0c;说你把矢量这些东西用久了&#xff0c;就应该形成一种“直觉”&#xff0c;仿佛这些东西就是你的左右手一样。而这次&#xff0c;我居然真的用“直觉”来…...

ICMP 和 IGMP 的区别

ICMP 和 IGMP 协议 IP 层分支图 ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制信息协议&#xff09; 用于补充 IP 传输数据报的过程中&#xff0c;发送主机无法确定数据报是否到达目标主机。 ICMP 报文分为出错报告报文和查询报文两种。 若数据…...

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…...

算法学习2——排序算法(2)

上一篇介绍了几种常见且使用较多的排序算法&#xff0c;本章主要是一个进阶内容&#xff0c;介绍三个较为复杂的算法。 计数排序 (Counting Sort) 计数排序是一种适用于范围较小的整数序列的排序算法。它通过统计每个元素的出现次数&#xff0c;然后依次输出元素&#xff0c;…...

嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)

1、PWM简介 (1)、什么是PWM 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制&#xff0c;是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术&#xff0c;广泛应用在从测量、通信到功率控制…...

python-NLP:1中文分词

文章目录 规则分词正向最大匹配法逆向最大匹配法双向最大匹配法 统计分词语言模型HMM模型 jieba分词分词关键词提取词性标注 规则分词 基于规则的分词是一种机械分词方法&#xff0c;主要是通过维护词典&#xff0c;在切分语句时&#xff0c;将语句的每个字符串与词表中的词进行…...

iOS 开发包管理之CocoaPods

CocoaPods&#xff08;Objective-C 时期&#xff0c;支持Objective-C和swift&#xff09;&#xff0c;CocoaPods下载第三方库源代码后会将其编译成静态库.a 文件 或动态库框架.framework 文件 的形式&#xff0c;并将它们添加到项目中&#xff0c;建立依赖关系&#xff0c;这种…...

Windows搭建RTMP视频流服务器

参考了一篇文章&#xff0c;见文末。 博客中nginx下载地址失效&#xff0c;附上一个有效的地址&#xff1a; Index of /download/ 另外&#xff0c;在搭建过程中&#xff0c;遇到的问题总结如下&#xff1a; 1 两个压缩包下载解压并重命名后&#xff0c;需要 将nginx-rtmp…...

VS2019安装MFC组件

VS2019支持的MFC版本是mfc140 ~ mfc142版本&#xff0c;它兼容VS2015、VS2017之前的老版本程序。 一、MFC的历史版本 MFC的历史版本如下&#xff1a; IDE发布时间工具集版本MSC_VERMSVCMFC版本dllVisual C6.01998V601200MSVC6.06.0mfc42.dll、mfcce400.dllVisual Studio 2002…...

Python学习—open函数,json与pickle知识点,Os模块详解

目录 1. Open函数 2.json与pickle模块 json模块 1. json.dumps() 2. json.dump() 3. json.loads() 4. json.load() pickle 模块 1. pickle.dumps() 2. pickle.dump() 3. pickle.loads() 4. pickle.load() 3.Os模块 1. Open函数 在Python中&#xff0c;open() 函数…...

基于SSM的高考志愿选择辅助系统

基于SSM的高考志愿选择辅助系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台 前台首页 院校展示 后台 后台首页 学校管理 摘要 随着高考制度的不断完…...

引领小模型潮流!OpenAI发布功能强大且成本低的GPT-4o mini

GPT-4o mini的成本比GPT-3.5 Turbo低了超过60%&#xff0c;其聊天表现优于Google的Gemini Flash和Anthropic的Claude Haiku。该模型从周四开始对ChatGPT的免费用户、ChatGPT Plus用户和团队订阅用户开放&#xff0c;并将在下周向企业用户开放。OpenAI计划未来将图像、视频和音频…...

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课&#xff0c;二战的时候只听了一遍强化&#xff0c;个人感觉没有很乱&#xff0c;永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图&#xff0c;永乐大帝讲课的时候也会特意点到线代前后联…...

Java项目:基于SSM框架实现的海鲜自助餐厅系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的海鲜自助餐厅系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…...

前端面试题日常练-day97 【Less】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Less中&#xff0c;以下哪个功能用于处理文本字间距&#xff1f; a) letter-spacing() b) word-spacing() c) text-spacing() d) space-between() Less中的Variables可以存储哪些类型的值&#xff…...

压缩视频大小的方法 怎么减少视频内存大小 几个简单方法

随着4K、8K高清视频的流行&#xff0c;我们越来越容易遇到视频文件体积过大&#xff0c;导致存储空间不足、传输速度缓慢等问题。视频压缩成为解决这一问题的有效途径&#xff0c;但如何在减小文件大小的同时&#xff0c;保证视频质量不受影响呢&#xff1f;本文将为你揭晓答案…...

JVM:GraalVM

文章目录 一、介绍1、什么是GraalVM&#xff1a;2、GraalVM版本 二、两种使用模式 一、介绍 1、什么是GraalVM&#xff1a; GraalVM是Oracle官方推出的一款高性能JDK&#xff0c;使用它享受比OpenJDK或者OracleJDK更好的性能。GraalVM的官网地址&#xff1a;https://www.graa…...

海外营销推广:快速创建维基百科(wiki)词条-大舍传媒

一、维基百科的永久留存问题 许多企业和个人关心维基百科是否能永久留存。实际上&#xff0c;只要企业和个人的行为没有引起维基百科管理方的反感&#xff0c;词条就可以长期保存。如果有恶意行为或被投诉&#xff0c;维基百科可能会对词条进行删除或修改。 二、创建维基百科…...

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;五、交互与状态管理 在之前我们已经学习了页面布局相关的知识&#xff0c;绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用&#xff0c;那么交…...

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时&#xff0c;如果没有刷新会正常返回到对应的页面&#xff0c;如果刷新后会在当前页反复横跳&#xff0c;或者跳转到登录页。那个时候我第一个想法时&#xff1a;使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…...

工厂方法模式java

文章目录 1. 概念2. 示例3. 代码示例 1. 概念 定义: 工厂方法模式又叫工厂模式,通过定义工厂父类创建对象的公共接口,而子类负责创建具体的对象 作用: 由工厂的子类来决定创建哪一个对象 缺点: 工厂一旦需要生成新的东西就需要修改代码,违背的开放封闭原则 2. 示例 3. 代码示…...

java模拟多ip请求【搬代码】

java模拟多ip请求 package url_demo;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.Random;public class HttpUtilTest…...

微软史诗级的蓝屏

本周经历了微软的蓝屏&#xff0c;一直到周末还在加班处理公司的问题。 个人终端受到的影响较大&#xff0c;服务器上也受到了影响。因为蓝屏的事情导致不少麻烦&#xff0c;据同事说因为蓝屏的问题&#xff0c;MGH 的手术安排也受到了影响。 目前我们也在着手处理有部署 Wind…...

手机网站设计思路/chatgpt网址

Ceph-dash是一款图形化展现Ceph状态的工具&#xff0c;并且部署起来非常简单&#xff08;在monitor节点上进行部署&#xff09;&#xff0c;操作如下&#xff1a;# mkdir -p /ceph-dash # cd /ceph-dash/ # ls app config.influxdb.json Dockerfile s…...

最新商城系统/百度搜索关键词排名人工优化

大家好&#xff0c;我是胖虎&#xff0c;一名历经沧桑&#xff0c;看透互联网行业百态的测试从业者。今天&#xff0c;就来细说我这一路走来的经历&#xff0c;通过我的经验分享和个人思考&#xff0c;也希望给你一些有价值的启发和帮助&#xff01; 选择改变&#xff0c;跳出舒…...

网站建设的主机/超级外链

PhysX 3.4更新 PhysX 3.4是一个重大更新&#xff0c;对多个方面带来了明显的改进。 首先&#xff0c;PhysX 3.4解决了大量Bug。例如&#xff1a;PhysX 3.4显著改进凸面与凸面间的碰撞检测和反馈&#xff0c;因此当启用PCM碰撞检测时&#xff0c;不会出现任何奇怪的碰撞情况。针…...

开发一个官方网站要多少钱/百度关键词推广方案

复试啦该动手OJ了&#xff0c;就从网上找了一个顺序&#xff0c;赶紧的 一菜鸟 1089-1096、1001、2000—2011、2039、1720、1062、2104、1064、2734、1170、1197、2629、2012—2030、2032、2040、2042、2054、2055 二菜鸟驿 2072、2081、2093、2091、1004、2057、2031、2033、…...

微网站平台怎样做网站/深圳网站建设三把火科技

NetworkWorld近日发文对Flame&#xff08;火焰&#xff09;&#xff0c;这个号称比震网和毒酷更强大的恶意软件进行了解读。 原文参见这里&#xff0c;通俗易懂。 【参考】 Anonymous几天之内攻陷500多个中国网站 TrendMicro&#xff1a;针对印日的LuckyCat*** symantec&#x…...

郑州网站制作天强科技/站长之家 seo查询

转自&#xff1a;MongoDB常用28条查询语句 1、查询所有记录 db.userInfo.find(); 相当于&#xff1a; select* from userInfo; 默认每页显示20条记录&#xff0c;当显示不下的情况下&#xff0c;可以用it迭代命令查询下一页数据。注意&#xff1a;键入it命令不能带“&#xff1…...