jenkins部署springboot项目(超详细讲解)

news2024/11/15 13:04:43

原来写了一篇博客是如何安装jenkins的,今天也来介绍一下怎么简单使用吧。

首先,我们要明确,jenkins自动化部署也只是代替你去做你要做的事,

我们梳理一下,你的代码写完,打包,扔到服务器上,部署。

所以jenkins代替我们要做什么

1.你的代码提交到git上,jenkins要把你的代码从git上拉取下来,然后编译,打包

2.运行这个包

看上去是很简单的,那么就让我们一步步来做吧。

上接我的Jenkins的简单使用,小白式教程_jenkins使用教程_前端菜茍的博客-CSDN博客

这里我们重启了一下jenkins

 docker restart jenkins

安装插件

 在可选插件中,搜索Maven Integration ,Gitee和 Publish Over SSH 三个插件:

 Maven Integration:Maven构建工具。

Publish Over SSH:整个工具,将来把Jenkins打包好的jar上传到应用服务器上。

搜索完成后,点击Install without restart:

 安装成功后,重启jenkins。最好手动重启。执行docker restart jenkins

配置jenkins

1.基本的环境配置

这个需要提前准备jdk和maven,避免权限问题,直接将jdk和maven上传到jenkins中,

一共需要配置以下环境

jdk

maven

git

 jdk配置

jenkins自带jdk,我们可以通过以下指令查看一下

docker exec -it jenkins /bin/bash // 进入jenkins

java -version //查看java版本

which java //查看java位置

 这里不包含/bin/java的部分就是java_home了

 别名随意取,java_home根据实际情况配置

maven配置

这个要自己准备

下载地址:https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz

可以直接cd到opt下面,用wget指令下载

也可以下载到本地,再上传到opt目录下

 

 可以看到java环境也在里面,我们将maven下载上传一下

退出exit

 解压一下,拷贝到容器中

 重命名

 拷贝进jenkins容器

 ok

我们最后来查看一下

 在容器的opt目录下已经存在maven文件夹了

接下来配置一下

名字随意,maven_home则是刚刚上传到容器中的maven目录

git配置

由于jenkins容器中已经存在git了,所以这里不需要额外安装git,默认即可

所以都配置完成,点击保存按钮。

简单介绍一下,这几个都是项目构建工具,ant是最古老的项目构建工具,这个写的东西太多,太麻烦,然后就搞了个东西叫maven,后来又觉得maven太慢了,有没有更高效的工具呢,所以又搞了一个东西,叫gradle。spring的开源项目基本都迁移到gradle上了。先有ant,再又maven,最后有gradle,情况基本就是这么个情况,大家知道这些都是构建工具即可。 

2.远程的凭证配置

3.应用服务器信息

应用服务器,就是将来jenkins将代码构建成功后,要上传的地方

 找到Publish over SSH,点击新增

 Name:随意填

Hostname:服务器地址

Username:root

Passphrase/Password:密码

 点击Test Configuration ,左边显示Success,配置成功

4.gitee的信息

 这里要先在gitee上准备一个仓库

 链接名就是仓库的地址,下面点击添加

 添加完凭据,选择这个Gitee API 令牌。最后测试链接,显示成功

最后点击保存。

开始一个项目的构建

 点击新建任务

 这里有一个需要注意的地方,就是分支,GitHup上现在默认的主分支名称时main。

 这里添加时用用户名密码登录

 添加完,选择一下该凭证

 

 项目构建命令

 

 

deploy.sh脚本如下

export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH

JAR_PATH=/root/data

JARFILE=denkins_demo-1.0-SNAPSHOT.jar

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9

java -jar $JAR_PATH/$JARFILE > out.log &
if [ $? = 0];then
        sleep 30
        tail -n 50 out.log
fi

ls -lt|awk 'NR>${print $NF}'|xargs rm -rf

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9

简单介绍一下上面这个语句,查找进程,按照$JARFILE的名字去过滤,最后把他kill掉,就是把上一个运行的jar杀掉,重新运行一个。

到这里就ok了。我们立即构建

 

 

 成功了。可以去服务器上看看有没有运行这个jar包,访问一下看看效果。

可以用jps查看运行中的jar文件,jenkins使用相对来说比较方便,也较为简单,希望对大家有所帮助。

再补充一个自动构建

修改俩个地方

1.首先配置一下触发构建的规则

2.复制上面的http://124.221.26.149:8088/gitee-project/my_first_jenkins_demo再去Gitee的项目中,配置WebHook,在管理选项卡选择WebHook

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

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

相关文章

tcp三次握手python实现和结果

下载抓包工具 安装 使用1 使用2 结果 红色笔为想要发送的数据。 代码 from scapy.all import * import logginglogging.getLogger(scapy.runtime).setLevel(logging.ERROR)target_ip = 172.20.211.4 target_port = 80 data = GET / HTTP/1.0 \r\n\r\ndef start_tcp(target_…

火爆全网,Charles抓包教程-辅助接口测试(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 功能图标 从左到右…

mysql综合练习语法总结

mysql综合练习 用于 小白练手的主要用于以后语法忘了回来看 题目 # 1、创建数据库test01_library # 2、创建表 books,表结构如下:# 3、向books表中插入记录 # 1)不指定字段名称,插入第一条记录 # 2)指定所有字段名…

经典的数组和指针结合的OJ题

一、合并两个有序数组 leetcode链接 题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递…

seata组件使用期间,获取全局事务状态

GlobalStatus枚举类展示全局事务状态 官网链接:http://seata.io/zh-cn/docs/user/appendix/global-transaction-status.html 获得全局事务状态 // 开启全局事务地方获取全局事务xid String xid RootContext.getXID(); // 通过全局事务xid获得GlobalStatus枚举类 …

Transformer 论文学习笔记

重新学习了一下,整理了一下笔记 论文:《Attention Is All You Need》 代码:http://nlp.seas.harvard.edu/annotated-transformer/ 地址:https://arxiv.org/abs/1706.03762v5 翻译:Transformer论文翻译 特点&#xff1…

【Qt】利用Tool Button控件创建下拉菜单按钮

功能描述 利用qt进行界面设计和开发,创建下拉按钮。 详细实现 1、在qt侧工具栏利用设计打开.ui文件 2、创建按钮 创建一个Tool Button按钮,并在属性窗口中的QToolButton栏中选中MenuButtonPopup属性。 3、创建action 在Action编辑器创建对应的ac…

Dual pyramid GAN for semantic image synthesis

为了解决在图像合成时候小物体容易消失,大物体经常作为块的拼接来生成的。本文提出DP-GAN在所有尺度下共同学习空间自适应归一化模块的条件。这样尺度信息就会被双向使用,他统一了不同尺度的监督。(重点看图和代码) SPADE模块解释 GAN在生成包含许多不同…

JavaScript学习 -- 对称加密算法DES

在现代的互联网时代,数据安全性备受关注。为了保护敏感数据的机密性,对称加密算法是一种常用的方法。在JavaScript中,DES(Data Encryption Standard)是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使…

npm i 报错项目启动不了解决方法

1.场景 在另一台电脑低版本node环境跑的react项目,换到另一台电脑node18环境执行npm i时候报错 2.解决方法 脚本前加上set NODE_OPTIONS--openssl-legacy-provider

使用稀疏性(微球)进行色谱图基线估计和去噪(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

okvis

论文 Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization 摘要 由于两种感知模式的互补性,视觉和惯性线索的融合在机器人中变得很流行。虽然迄今为止大多数融合策略都依赖于过滤方案,但视觉机器人界最近转向了非线性优化方法&#x…

Kafka的零拷贝

传统的IO模型 如果要把磁盘中的某个文件发送到远程服务器需要经历以下几个步骤 (1) 从磁盘中读取文件的内容,然后拷贝到内核缓冲区 (2) CPU把内核缓冲区的数据赋值到用户空间的缓冲区 (3) 在用户程序中调用write方法,把用户缓冲区的数据拷贝到内核下面…

树莓派上安装cmake

前言 记录一下在树莓派上安装cmake,因为之间安装出了点问题,但是后面解决了,于是记录一下。 直接安装报大红,看的我心里一颤 废话不多说,接下来上操作步骤 网上有的教程让wget下载压缩包,但是咱们就是不知道为啥我这样操作就是也报错,但是我感觉原理上是🆗的,并且…

Qt状态栏

QStatusBar QStatusBar* stBar statusBar();QLabel* lb1 new QLabel("标签1"); //lb1->setAlignment(Qt::AlignLeft); //左对齐QLabel* lb2 new QLabel("标签2");QLineEdit* edit new QLineEdit("edit");QPushButton* btnOpe…

Java程序逻辑控制(三种基本结构(顺序、分支、循环)、输入输出、循环输入)

目录 一、顺序结构 二、分支结构 1、 if 语句 2、switch 语句 与C语言不同,不能作为switch参数的类型:float double long boolean 三、循环结构 1.while循环 2.for循环 四、输入输出 1.输出 - 将结果显示打印到屏幕上 2.输入 3.输入输出综合…

用友畅捷通T+服务器数据库中了locked勒索病毒怎么办,如何处理解决

计算机技术的发展,也为网络安全埋下隐患,其中勒索病毒攻击已经成为企业和组织面临的严重威胁之一。作为一款被广泛使用的企业资源管理软件,用友畅捷通T系统也成为黑客攻击的目标之一。近期,我们收到很多企业的求助,公司…

Shell脚本实现分库分表操作

目录 一,分库备份 二,分库操作 三,分库分表备份 四,备份还原 一,分库备份 #!/bin/bash mysql_cmd-uroot -pzly666666 bak_path/backup/db [ -d ${bak_path} ] || mkdir -p ${bak_path}mysql ${mysql_cmd} -e show…

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

FFmpeg 音视频开发工具

目录 FFmpeg 下载与安装 ffmpeg 使用快速入门 ffplay 使用快速入门 FFmpeg 全套下载与安装 1、FFmpeg 是处理音频、视频、字幕和相关元数据等多媒体内容的库和工具的集合。一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。 官网:http…