Linux下Jenkins自动化部署SpringBoot应用

Linux下Jenkins自动化部署SpringBoot应用

1、 Jenkins介绍

官方网址:https://www.jenkins.io/

2、安装Jenkins

2.1 centos下命令行安装

访问官方,点击文档:

在这里插入图片描述

点击 Installing Jenkins:

在这里插入图片描述

点击 Linux:

在这里插入图片描述

在这里插入图片描述

选择 Red Hat/Alma/Rocky,就可以看到相关的安装命令:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# 安装安装包
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
# 启动
sudo systemctl daemon-reload
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

其它版本的安装请参考:https://pkg.jenkins.io/redhat-stable/

# 本文安装
# 下载镜像
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo# 安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key# 更新
yum upgrade# 安装 Java 环境
yum install java-11-openjdk# 安装 Jenkins
yum install jenkins# 启动
systemctl daemon-reload
systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins

2.2 错误处理

2.2.1 错误1

如果报错:

$ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2022-11-15 09:38:52-- https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133,
151.101.130.133, ...
Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected.
ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's
Encrypt/CN=R3’:
Issued certificate has expired.
To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.

请使用下面的命令:

wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 或者
yum install -y ca-certificates
2.2.2 错误2

如果报错:

$ yum install jenkins
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.bupt.edu.cn* extras: mirrors.bfsu.edu.cn* updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 jenkins.noarch.0.2.414.3-1.1 将被 安装
--> 解决依赖关系完成依赖关系解决=====================================================================================================================Package                   架构                     版本                             源                         大小
=====================================================================================================================
正在安装:jenkins                   noarch                   2.414.3-1.1                      jenkins                    85 M事务概要
=====================================================================================================================
安装  1 软件包总计:85 M
安装大小:85 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/jenkins/packages/jenkins-2.414.3-1.1.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID ef5975ca: NOKEYjenkins-2.414.3-1.1.noarch.rpm 的公钥尚未安装

请使用下面的命令:

$ yum install jenkins --nogpgcheck 

2.3 启动状态

# 查看启动状态
# systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration ServerLoaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)Active: active (running) since 六 2023-10-21 13:16:13 CST; 10s agoMain PID: 5851 (java)Tasks: 53Memory: 1.1GCGroup: /system.slice/jenkins.service└─5851 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war...1021 13:15:49 opengauss jenkins[5851]: c251022ca0c2478794f84f67117810d9
1021 13:15:49 opengauss jenkins[5851]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.192+0000 [id=30]        INFO        jenkins.In...ation
1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.203+0000 [id=23]        INFO        hudson.lif...nning
1021 13:16:13 opengauss systemd[1]: Started Jenkins Continuous Integration Server.
1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        h.m.Downlo...aller
1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        hudson.uti...pt #1
Hint: Some lines were ellipsized, use -l to show in full.

3、访问Jenkins

访问地址:http://192.168.143.175:8080

在这里插入图片描述

查看密码并且输入密码:

$ cat /var/lib/jenkins/secrets/initialAdminPassword
c251022ca0c2478794f84f67117810d9

在这里插入图片描述

选择安装推荐的插件,Jenkins 便会开始自动下载安装:

在这里插入图片描述

下载完之后会自动跳转到下一个页面:

在这里插入图片描述

填写信息点击保存并完成:

在这里插入图片描述

会跳转到另一个页面:

在这里插入图片描述

点击保存并完成:

在这里插入图片描述

点击开始使用 Jenkins:

在这里插入图片描述

4、插件的安装

使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。

点击 “Manage Jenkins” --> “插件管理”:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里可以看到我们需要的插件,按需下载即可。

5、卸载Jenkins

# rpm卸载Jenkins
rpm -e jenkins# 检查是否卸载成功
rpm -ql jenkins# 彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf

6、Jenkins全局配置

需要配置的有 jdk、git、maven 工具。

6.1 JDK安装

# 下载地址
# http://www.oracle.com/technetwork/java/javase/downloads/index.html
# 使用的版本
# jdk-8u212-linux-x64.tar.gz# 1、解压
$ tar -zxvf jdk-8u212-linux-x64.tar.gz# 2、重命名
$ mv jdk1.8.0_212 jdk1.8# 3、添加环境变量
$ vim /etc/profile
export JAVA_HOME=/home/zhangshixing/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH# 4、生效
$ source /etc/profile # 5、查看版本
$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)# 6、查看路径
$ which java
/home/zhangshixing/java/jdk1.8/bin/java

6.2 git安装

# 使用yum安装
$ yum -y install git
$ git --version
# 使用安装包安装:
# 1、下载安装包
# https://mirrors.edge.kernel.org/pub/software/scm/git/
wget -O git-2.22.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.20.0.tar.gz# 2、解压安装包
$ tar -zxvf git-2.22.0.tar.gz# 3、进入解压后的文件夹
$ cd git-2.22.0# 4、安装需要的依赖
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker# 5、在安装编译源码所需依赖的时候,yum会自动帮你安装git,这时候你需要先卸载这个旧版的git
$ yum -y remove git# 6、编译git源码
$ make prefix=/usr/local/git all# 7、安装git至/usr/local/git路径
$ make prefix=/usr/local/git install# 8、配置环境变量
$ vim /etc/profile 
$ export PATH=$PATH:/usr/local/git/bin# 9、使配置文件生效
$ source /etc/profile# 10、查看git是版本
$ git --version
git version 2.22.0# 11、查看路径
$ which git
/usr/local/git/bin/git

6.3 Maven安装

# 下载地址
# https://dlcdn.apache.org/maven/maven-3
# 使用的版本
# apache-maven-3.3.9-bin.tar.gz# 1、解压
$ tar -zxvf apache-maven-3.3.9-bin.tar.gz# 2、创建maven资源库目录
$ mkdir -p /home/zhangshixing/maven/m2/repository# 3、编辑settings.xml文件
$ cd /home/zhangshixing/maven/apache-maven-3.3.9/conf
$ vim settings.xml
# 将原文件内容全部删除,添加新的配置内容
$ :1,.d# 4、新的配置内容
<?xml version="1.0" encoding="UTF-8"?>
<settingsxmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><localRepository>/home/zhangshixing/maven/m2/repository</localRepository><pluginGroups></pluginGroups><proxies></proxies><servers></servers><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors><profiles></profiles>
</settings># 5、添加环境变量
$ vim /etc/profile
MAVEN_HOME=/home/zhangshixing/maven/apache-maven-3.3.9
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH# 6、重新加载配置文件
$ source /etc/profile# 7、查看版本
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/zhangshixing/maven/apache-maven-3.3.9
Java version: 1.8.0_212, vendor: Oracle Corporation
Java home: /home/zhangshixing/java/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"# 8、查看路径
$ which mvn
/home/zhangshixing/maven/apache-maven-3.3.9/bin/mvn

6.4 进行配置

点击 “Manage Jenkins” --> “Tools”:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

全部配置完成之后,点击保存、点击应用。

7、新建git仓库并上传代码

在这里插入图片描述

8、任务的创建与执行

登入 Jenkins,点击 “新建 Item”,输入任务名称并选择构建一个多配置项目;

在这里插入图片描述

在这里插入图片描述

点击确定,之后我们作出如下配置:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击保存:

在这里插入图片描述

返回面板,点击按钮执行此任务:

在这里插入图片描述

执行结果:

在这里插入图片描述

一个简单的自动化部署应用就完成了。

9、Jenkins通过脚本的方式运行mvn命令不识别的处理方式

如果我们进行如下的配置:

在这里插入图片描述

则会报如下的错误:

/tmp/jenkins8798212945672749251.sh:行1: mvn: 未找到命令

解决方法:把 maven 的 mvn 弄个快捷方式到sbin下就可以解决:

ln -s $MAVEN_HOME/bin/mvn /usr/sbin/mvn

10、配置git凭据

修改 Git 配置:

在这里插入图片描述

点击添加:

在这里插入图片描述

输入相关信息并且点击添加:

在这里插入图片描述

重新选择:

在这里插入图片描述

保存然后重新运行。

11、配置应用服务器信息

应用服务器,就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)。

首先安装 Publish Over SSH 插件:

在这里插入图片描述

然后进行配置:

在这里插入图片描述

用户名密码方式:

在这里插入图片描述

在这里插入图片描述

密钥方式:

# 在目标服务器上执行,也就是需要上传目录的服务器
# 生成rsa密钥,回车
$ ssh-keygen -t rsa# 把公钥内容追加到认证文件中
$ cat id_rsa.pub >> authorized_keys# 授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys$ vim /etc/ssh/sshd_config
PemitRootLogin yes# 重启
$ service sshd restart

在这里插入图片描述

在这里插入图片描述

点击保存。

在项目中进行配置打包好的文件进行上传:

在这里插入图片描述

# 目标服务器上执行
$ pwd
/opt/data$ ls
jenkins_demo-0.0.1-SNAPSHOT.jar

我们可以在上传完安装包之后执行一个部署脚本:

# /opt/data/deploy.sh#!/bin/bashexport JAVA_HOME=/home/zhangshixing/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATHJAR_PATH=/opt/data
JARFILE=jenkins_demo-0.0.1-SNAPSHOT.jarcd $JAR_PATHps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9java -jar $JARFILE > out.log &if [ $? = 0 ];thensleep 30tail -n 50 out.log
fi

修改项目中的执行命令:

在这里插入图片描述

重新运行,然后访问,看安装包是否启动:

$ curl -X GET http://192.168.143.175:9999/hello
Hello World!
$ pwd
/opt/data$ ls
deploy.sh  jenkins_demo-0.0.1-SNAPSHOT.jar  out.log

我们可以看到程序正常启动,并且可以正常访问。

12、自动构建

好了,现在我们的项目还不是自动构建,也就是当我们向 Gitee 上的代码仓库提交代码之后,并不会触发 Jenkins

的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。

为了实现自动触发构建,我们需要修改两个地方。

12.1 安装Gitee插件

在这里插入图片描述

12.2 修改Jenkins

首先在 Jenkins 的当前项目中,配置一下触发构建的规则:

在这里插入图片描述

在这里插入图片描述

大家注意,在网页上 Jenkins 已经给出了将来要配置的 Webhook 的地址了,大家直接拷贝该地址即可。

# webhook地址
http://192.168.143.175:8080/gitee-project/first%20jenkins# webhook密码
373930de602b51fad08a301b2aca8ab2

12.3 配置Webhook

接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后

点击添加 WebHook。

在这里插入图片描述

我们这里的 192.168.143.175 不是公网IP,所以gitee上配置会有问题,这里只演示配置方式。

配置之后我们可以点击测试看是否配置成功。

12.4 修改代码push代码

push代码之后就会触发Jenkins自动打包部署。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568平台 GPIO子系统框架

一.gpio 子系统简介 gpio 子系统顾名思义&#xff0c;就是用于初始化 GPIO 并且提供相应的 API 函数&#xff0c;比如设置 GPIO为输入输出&#xff0c;读取 GPIO 的值等。gpio 子系统的主要目的就是方便驱动开发者使用 gpio&#xff0c;驱动 开发者在设备树中添加 gpio 相关信…

改进YOLO系列 | YOLOv5/v7 引入 Dynamic Snake Convolution | 动态蛇形卷积

准确分割拓扑管状结构,如血管和道路,在各个领域中至关重要,可以确保下游任务的准确性和效率。然而,许多因素使任务复杂化,包括细小的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这一知识来引导我们的DSCNet,以在三个阶段同时增强感知:…

【问题记录】解决Qt连接MySQL报“QMYSQL driver not loaded”以及不支持MySQL事务操作的问题!

环境 Windows 11 家庭中文版&#xff0c;64 位操作系统, 基于 x64 的处理器Qt 5.15.2 MinGW 32-bitmysql Ver 14.14 Distrib 5.7.42, for Win32 (AMD64) 问题情况 在Qt 5.15.2 中编写连接MySQL数据库代码后&#xff0c;使用 MinGW 32-bit 构建套件进行编译运行后&#xff0c;报…

互联网Java工程师面试题·Java 面试篇·第四弹

目录 59、我们能自己写一个容器类&#xff0c;然后使用 for-each 循环码&#xff1f; 60、ArrayList 和 HashMap 的默认大小是多数&#xff1f; 61、有没有可能两个不相等的对象有有相同的 hashcode&#xff1f; 62、两个相同的对象会有不同的的 hash code 吗&#xff1f; …

专业安卓实时投屏软件:极限投屏(QtScrcpy作者开发)使用说明

基本介绍 极限投屏是一款批量投屏管理安卓设备的软件&#xff0c;是QtScrcpy作者基于QtScrcpyCore开发&#xff0c;主要功能有&#xff1a; 设备投屏&控制&#xff1a;单个控制、批量控制分组管理wifi投屏adb shell快捷指令文件传输、apk安装 更多功能还在持续更新。 极…

Node学习笔记之Express框架

一、express 介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架&#xff0c;官方网址&#xff1a;https://www.expressjs. com.cn/ 简单来说&#xff0c;express 是一个封装好的工具包&#xff0c;封装了很多功能&#xff0c;便于我们开发 WEB 应用&…

【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR

目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …

Rust逆向学习 (2)

文章目录 Guess a number0x01. Guess a number .part 1line 1loopline 3~7match 0x02. Reverse for enum0x03. Reverse for Tuple0x04. Guess a number .part 20x05. 总结 在上一篇文章中&#xff0c;我们比较完美地完成了第一次Rust ELF的逆向工作&#xff0c;但第一次编写的R…

SL8541 android系统环境+编译

1.Ubuntu系统的安装 最好使用ubuntu18.0.4 2.工具环境包的安装 // 安装Android8.1源码编译环境 sudo apt-get install openjdk-8-jdk --------------ok sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g-multilib --------------ok sudo…

1 Go的前世今生

概述 Go语言正式发布于2009年11月&#xff0c;由Google主导开发。它是一种针对多处理器系统应用程序的编程语言&#xff0c;被设计成一种系统级语言&#xff0c;具有非常强大和有用的特性。Go语言的程序速度可以与C、C相媲美&#xff0c;同时更加安全&#xff0c;支持并行进程。…

curl命令服务器上执行http请求

1. 现在本地使用postman生成curl命令 注意: 将ip改成127.0.0.1,端口是实际服务运行的端口 curl --location --request POST http://127.0.0.1:63040/content/course/list?pageNo1&pageSize2 \ --header Content-Type: application/json \ --data-raw {"courseName&q…

小插曲 -- 使用Visual Studio Code远程连接香橙派

在之前的学习中&#xff0c;代码的修改和保存都依赖于“vi”指令&#xff0c;而不得不承认vi指令的编辑界面非常原始&#xff0c;所以&#xff0c;如果可以将代码编辑放到更友好的环境里进行无疑是一件大快人心的事情。 本节介绍如何通过Visual Studio Code来进行远程连接: Vi…

【计算机网络】UDP/TCP协议

文章目录 :peach:1 UDP协议:peach:1.1 :apple:UDP协议端格式:apple:1.2 :apple:UDP的特点:apple:1.3 :apple:UDP的缓冲区:apple:1.4 :apple:UDP使用注意事项:apple:1.5 :apple:基于UDP的应用层协议:apple: 2 :peach:TCP协议:peach:2.1 :apple:TCP协议端格式:apple:2.2 :apple:确…

Redis 命令—— 超详细操作演示!!!

内存数据库 Redis7 三、Redis 命令3.1 Redis 基本命令3.2 Key 操作命令3.3 String 型 Value 操作命令3.4 Hash 型 Value 操作命令3.5 List 型 Value 操作命令3.6 Set 型 Value 操作命令3.7 有序Set 型 Value 操作命令3.8 benchmark 测试工具3.9 简单动态字符串SDS3.10 集合的底…

Jenkins环境部署与任务构建

一、CI/CD 1、CI/CD 概念&#xff1a; CI/CD 是一种软件开发和交付方法&#xff0c;旨在加速应用程序的开发、测试和部署过程&#xff0c;以提高软件交付的质量和效率。 (1) 持续集成 (CI Continuous Integration): 持续集成是开发团队频繁集成其代码更改的过程。开发者将其…

04.Finetune vs. Prompt

目录 语言模型回顾大模型的两种路线专才通才二者的比较 专才养成记通才养成记Instruction LearningIn-context Learning 自动Prompt 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》&#xff0c;B站自行搜索 语言模型回顾 GPT&#xff1a;文字接龙 How are __. Bert&a…

【LSTM-Attention】基于长短期记忆网络融合注意力机制的多变量时间序列预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic

前言 今天推荐一款基于DMSkin框架开发的网易云音乐播放器&#xff1a;DMSkin-CloudMusic。 DMSkin 框架介绍 DMSkin是一个开源的WPF样式UI框架&#xff0c;可以帮助开发者快速创建漂亮的用户界面。 下载体验 下载地址&#xff1a;https://github.com/944095635/DMSkin-Clou…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-HMI人机交互

书接上回 2.3.7HMI人机交互 2.3.7.1显示 (1)图标 序号 图标状态 (图形、颜色供参考) 含义说明 备注 1 辅助驾驶功能READY (允许激活) 2 辅助驾驶功能激活 3 辅助驾驶系统故障 4

ATPCS:ARM-Thumb程序调用的基本规则

为了使单独编译的c文件和汇编文件之间能够互相调用&#xff0c;需要制定一系列的规则&#xff0c;AAPCS就是ARM程序和Thumb程序中子程序调用的基本规则。 1、ATPCS概述 ATPCS规定了子程序调用过程中寄存器的使用规程、数据站的使用规则、参数的传递规则。为了适应一些特殊的需…