Jenkins部署项目一(物理机器部署SpringBoot项目)

news2024/12/26 23:06:08

一、Jenkins部署SpringBoot项目

设备:MacOS

准备工作

1.已安装java开发工具包JDK
2.已安装依赖管理工具Maven
3.已安装代码版本控制工具Git
4.已安装Jenkins

learn-moon代码地址:https://github.com/BillDavidup/learn-moon

SSH: git@github.com:BillDavidup/learn-moon.git
HTTP: https://github.com/BillDavidup/learn-moon.git

详细步骤

1.安装插件

打开Jenkins页面,浏览器输入http://localhost:8080/
在这里插入图片描述
第一次打开使用cat命令读取秘钥文件中的秘钥cat /var/root/.jenkins/secrets/initialAdminPassword,权限不够则用sudo cat /var/root/.jenkins/secrets/initialAdminPassword,填入管理员密码,点击继续
在这里插入图片描述
选择安装推荐的插件来安装,安装后检查必须需要安装再安装,再手动必须安装的插件有Maven Integration、GitHub plugin或Gitlab或gitee(选择用到的)
在这里插入图片描述
创建一个用户
在这里插入图片描述
为了避免端口占用,还可以修改Jenkins地址的端口,这里就默认用http://localhost:8080/
在这里插入图片描述
保存后来到欢迎页
在这里插入图片描述
选择Manage Jenkins->Manage Plugins->可选插件,搜索框输入需要安装的插件
在这里插入图片描述
github插件已安装,如果用的是gitlab,则需要安装gitlab插件,项目存在github中,所以只安装了github。提示:GitLab/GitLab Plugin和Gitlab Hook/Gitlab Hook Plugin 两个插件安装 有些jenkins版本可能这两个插件都在GitLab/GitLab Plugin中,所以只需要安装这一个插件即可。
在这里插入图片描述

2.全局插件配置

Manage Jenkins->Global Tool Configuration

2.1 Maven设置setting.xml文件

在这里插入图片描述

2.2 JDK设置

在这里插入图片描述
MacOS:查看JDK安装路径的命令是/usr/libexec/java_home -V
在这里插入图片描述

2.3 Git设置/usr/bin/git这里是MacOS系统的安装文件git文件

如果是Windows: 则配置为git的安装目录下的git.bash文件全路径名
如果是Linux: 跟MacOS类似,找到具体的文件全路径
在这里插入图片描述

2.4 配置Maven的Home目录(Home目录的意思就是包含/bin的上一次文件夹)

在这里插入图片描述

3.新建一个视图和部署任务

3.1 新建视图

视图用于区分应用分组,比如测试环境(test)、预发环境(pre)、线上环境(prod)
在这里插入图片描述
新建了一个learn-test视图
在这里插入图片描述
在learn-test视图下新建一个部署任务(item)
在这里插入图片描述
新建了一个learn-moon项目的dev环境部署任务learn-moon-dev
在这里插入图片描述

3.2 配置git仓库

配置项目learn-moon的ssh地址,因为Jenkins需要拉取github上面的learn-moon项目代码,在Jenkins中配置该项目的SSH地址即可
在这里插入图片描述
配置Credentials项的私钥
在这里插入图片描述
张贴私钥,给私钥随意取了一个testPrivateKey名字
在这里插入图片描述
Credentials选择刚才添加的私钥选项testPrivateKey
在这里插入图片描述
选择对哪个分支进行构建,默认是master,可以根据不同环境选择不同的代码分支
在这里插入图片描述

3.3 maven设置

Pre Steps在构建项目之前需要做的操作,比如执行shell的脚本,如果没有,则不需要选择
在这里插入图片描述
设置maven的build命令clean install -Dmaven.test.skip=true忽略测试类,勾选Add timestamps to the Console Output之后Jenkins会将构建项目的日志输出在Jenkins的控制台
在这里插入图片描述
Post Steps即在bulid项目之后需要做的操作,比如执行shell脚本,不需要的话就不选择
在这里插入图片描述
因为我们部署的是SpringBoot服务,需要在构建完成后启动服务,选择Run only if build succeeds(仅在构建成功时运行) -> Execute shell(执行shell)
配置的执行shell脚本内容如下:

#!/bin/bash
# 关闭已启动的应用
AppJar=learn-moon-web-1.0-SNAPSHOT.jar
PID=$(ps -ef | grep $AppJar | grep -v grep | awk '{ print $2 }')
if [ ${PID} ]; 
then
 echo 'Application is stopping...'
 echo kill $PID DONE
 kill -9 $PID
else
 echo 'Application is already stopped...'
fi

# 启动服务
## 将jenkins从仓库拉取到的代码构建后的jar包移动到/Users/wudening/project/目录下,所有需要提前创建好该目录
## 如果不清楚Jenkins打包后的jar包路径,可以先不写,等执行任务后查看构建的jar包输出目录
mv /Users/wudening/.jenkins/workspace/learn-moon_dev/learn-moon-web/target/$AppJar /Users/wudening/project/$AppJar
## 进入到复制好jar的目录
cd /Users/wudening/project/
## 后台执行启动服务命令,且分配JVM内存;BUILD_ID=dontKillMe的作用是构建完成避免关闭进程和子进程,造成服务启动无效
BUILD_ID=dontKillMe nohup java -Xms512m -Xmx512m -jar $AppJar &

#备份应用
backupSubString=$(date +%Y%m%d%H%M)
cp $AppJar $AppJar-$backupSubString
echo "backup jar success!"

在这里插入图片描述
如果脚本内容比较多,那么可以在服务器上创建一个脚本(learn-moon-start.sh),将以上脚本内容写在一个文件里,然后赋予脚本执行权限,那么在Jenkins中只要执行对应的脚本即可,建议用绝对路径,例:sh /Users/wudening/project/learn-moon/learn-moon-start.sh

3.4 构建后如果想触发邮件

在这里插入图片描述

3.5 jenkins执行构建并验证服务是否启动

在这里插入图片描述
浏览器中访问learn-moon的http接口进行验证http://localhost:9092/api/alive
在这里插入图片描述

接上,查看Jenkins打包的路径

Build History 构建历史记录->控制台输出
在这里插入图片描述
在这里插入图片描述

4.实现分支(master)提交代码后触发Jenkins自动部署服务(learn-moon)

参考:https://blog.csdn.net/m0_67403013/article/details/126790479
问题:一般在生产环境中,部署jenkins的服务和项目的服务不在同一台机器上,这就需要再脚本中通过SSH登录目标服务器部署,还需要利用SCP命令将jenkins构建的应用jar包拷贝到目标服务器上;

  • 如果是远程则用SSH登录账号(需要安装 Publish Over SSH和Infrastructure plugin for Publish Over XVersion插件);用到的命令SSHSCP
  • 部署脚本可以放在目标服务器的文件夹下,在配置jenkins的Execute shell脚本中引用该进行部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学Vue就跟玩一样】如何使用集中式状态管理的Vuex以及如何模块化编码+命名空间

1.vuex是什么一个专门在Vue中实现集中式状态管理的一个Vue插件,可以对vue应用中多个组件的共享状态进行集中式的管理(读取/写入),也是一种组件间通信的方式,并且适用于任意组件间通信2.什么时候使用Vuex1.多个组件依赖于同一状态2.来自不同组件的行为需要…

Goland入门指南(使用Goland创建并运行项目)

在文章《Goland下载和安装》详细介绍了 Goland 的安装和破解,本节我们来介绍一下怎么使用 Goland 来创建并运行一个项目。 创建项目 首先,在“文件”菜单中找到“New”,并在下一级菜单中选择“Project”来创建一个新项目。 为项目选择一个…

【vim】C语言代码提示

前言 常见的C语言提示插件是YouCompleteMe,这个插件安装比较麻烦,在这推荐一款coc.nvim这个插件,github仓库地址:https://github.com/neoclide/coc.nvim/ 下面是安装步骤。 一、安装 nodejs 1、终端命令安装 curl -sL instal…

SpringMVC DispatcherServlet源码(2) 扫描Controller创建HandlerMapping流程

Spring MVC向容器注册一个RequestMappingInfoHandlerMapping组件,他会扫描容器中的Controller组件,创建RequestMappingInfo并注册HandlerMethod映射关系。 本文将阅读Spring MVC源码分析上述流程。 RequestMappingHandlerMapping组件 Creates Request…

java ssm校园兼职发布与互动平台的设计与实现

该系统基于B/S即所谓浏览器/服务器模式,应用JSP技术,选择MySQL作为后台数据库。系统主要包括个人中心、用户管理、企业管理、企业信息管理、兼职信息管理、职位申请管理、职位类型管理、交流中心、留言反馈、系统管理等功能模块。 使用校园兼职发布与互动…

JavaWeb:会话技术之Session

Cookie已经能完成一次会话多次请求之间的数据共享,之前我们还提到过Session也可以实现,那么: 什么是Session?Session如何来使用?Session是如何实现的?Session的使用注意事项有哪些? 1. Sessio…

SpringCloud学习笔记 - 熔断降级 - Sentinel

1. Sentinel熔断降级概述 1.1. 熔断降级要解决的问题 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如&…

海康Visionmaster-VM权限设置、软件设置、方案设置和运行策略

权限设置 权限设置可设置是否配置管理员、技术员和操作员权限和配置密码,并设置不同角色人员的权限。 权限导入导出可对当前软件权限设置模块的配置以txt格式文档进行导入或导出。 打开启用加密时,需设置管理员密码。设置完成后,软件以管理员…

如何把Node项目部署到服务器上

1. 如何合理选购一台服务器 对于服务器的选择,我们主要有以下几种选择: 1. 阿里云; 2. 腾讯云; 3. 华为云; 4. 亚马逊云; 国内用户如果没有特殊需求可以选择前三种,这里我阿里云举例&…

【Vue】vue-devtools调试工具安装和配置

1. 安装 vue-devtools 调试工具vue 官方提供的 vue-devtools 调试工具,能够方便开发者对 vue 项目进行调试与开发。Chrome 浏览器在线安装 vue-devtools :https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpdFi…

RPA自动办公02——Uibot界面元素选择

继续RPA-Uibot的简单使用,本次带来RPA自动点击网页。 当然官方教程更加详细:界面元素自动化_UiBot开发者指南 按照书上的教程,点击一个表格,在右边拖拽命令,然后选择元素就可以了: 这个表格在官方文档上有…

为什么要开发SpringBoot?

Spring配置繁琐 虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多 XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基…

计算机图形学 第4章 多边形填充

目录前驱知识多边形的扫描转换有效边表填充算法原理边界像素处理原则怎么算交点有效边桶表与边表桶表表示法边缘填充算法填充过程在这里插入图片描述区域填充算法/种子填充算法种子填充算法扫描线种子填充算法 (更有效)前驱知识 了解扫描转换的基本概念…

九龙证券|兔年行情将打响,A股2月上涨概率最高

兔年行情行将正式打响,迎接投资者的会否是 “兔”飞猛进的行情呢?证券时报数据宝带您一起透视兔年股票上涨概率。 A股新年后上扬概率高 从近10年A股新年后的市场体现来看,头几个买卖日大概率上涨。 数据宝统计,曩昔10年&#xf…

国内在线图表工具,你能说出几个?

之前写过很多篇在线图表、数据分析处理类工具的内容,但都是针对单个问题写的,没有将其整合起来,今天就借着这个问题,做个国内在线图表工具的合集。 一共5大类,每一类各介绍一个代表性工具,全文较长&#x…

【c语言进阶】文件操作知识大全上

🚀write in front🚀 📜所属专栏:> c语言学习 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…

15. XML解析

1. 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language)。 a. XML 是一种很像HTML的标记语言。 b. XML 的设计宗旨是传输数据,而不是显示数据。 c. XML 标签没有被预定义。您需要自行定义标签。 d. XML 被设计为具有自…

Tomcat详解

Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. 同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端. HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实…

星戈瑞--磺化CY7标记活性脂Sulfo CY7-NHS注意事项你知道那些?

Sulfo-Cy7 NHS酯是一种磺化、亲水性和高度水溶性染料。该试剂允许制备Cy7标记的生物分子,特别适用于标记脆弱的蛋白质和易变性的蛋白质。染料标记的分子可用于各种研究相关的实验。近红外荧光成像利用了生物组织在特定波长范围内的透明度。在活生物体中,…

2. Kimball的DW/BI架构解析

文章目录Kimball的DW/BI架构1. 业务系统(数据源系统)2. 获取-转换-加载(ETL)系统3. 用于支持BI(商业智能)决策的展现区4. 商业智能应用引言:DW,即Data Warehouse,数据仓库…