Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目
文章目录
- 安装
- 安装JDK
- 安装Maven
- 安装Git
- NodeJS安装(可选)
- 安装Jenkins
- 配置Jenkins
- 为Jenkins更换插件源
- 设置jenkins时区
- 安装插件
- 全局工具配置
- 添加Gitee凭证
- Gitee项目配置
- 部署后端
- 1.新建任务
- 2.配置源码管理
- 3.构建触发器
- 4.到Gitee中添加WebHook
- 5.构建环境
- 6.Pre Steps
- 7.配置编译
- 8.Post Steps
- 9.测试
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
- Jenkins官方中文文档:https://www.jenkins.io/zh/doc/
- Jenkins官网:https://www.jenkins.io/doc
jenkins需要java环境,注意不同的jenkins版本对应的java版本要匹配,否则无法运行。
- https://www.jenkins.io/doc/book/platform-information/support-policy-java/
运行Jenkins需要以下Java版本:
不要下载低版本的了,很多插件不支持,最低建议JDK11
| 支持的Java版本 | 长期支持(LTS)版本 | Weekly release |
|---|---|---|
| Java 11, Java 17, or Java 21 | 2.426.1 (November 2023) | 2.419 (August 2023) |
| Java 11 or Java 17 | 2.361.1 (September 2022) | 2.357 (June 2022) |
| Java 8, Java 11, or Java 17 | 2.346.1 (June 2022) | 2.340 (March 2022) |
| Java 8 or Java 11 | 2.164.1 (March 2019) | 2.164 (February 2019) |
安装
安装JDK
# 更新apt
$ sudo apt-get update
# 安装
# sudo apt-get install openjdk-8-jdk
$ sudo apt-get install openjdk-11-jdk
# 查看JAVA版本
$ java -version
which java
# 一般路径在 /usr/lib/jvm/java-11-openjdk-amd64
如果存在多个jdk版本可以按照下面方式切换。
sudo update-alternatives --config java sudo update-alternatives --config javac
安装Maven
sudo apt install maven
mvn -v
whereis maven
maven目录一般在/usr/share/maven
配置中央仓库
修改maven的setting指向阿里云
vim /usr/share/maven/conf/settings.xml
mirrors下添加mirror
<mirror><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>*</mirrorOf> </mirror>
安装Git
sudo apt-get install git
which git
whereis git
NodeJS安装(可选)
不安装vue等前端项目则不需要安装这个。
sudo apt-get install -y nodejs
npm config set registry https://registry.npm.taobao.org
whereis node
node -v
npm -v
安装Jenkins
安装Jenkins有多种方法,命令和下载war包方式等。
1.下载 Jenkins,注意跟JDK对应的版本才行。
JDK11,我下载的这个2.440.1版本
清华大学镜像下载更快:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/
# 用这个也很快,只需要改路径中的版本即可 wget https://mirrors.jenkins.io/war-stable/2.440.1/jenkins.war wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.440.1/jenkins.war
2.打开终端进入到下载目录.
3.运行命令 java -jar jenkins.war --httpPort=8999.
4.打开浏览器进入链接 http://localhost:8999.
注意:如果有nginx反向代理jenkins需要按照下面处理。
希望请求https://www.example.com/jenkins到jenkins,则
--prefix=/jenkins参数必须包含在 jenkins命令行参数中。即nginx配置为
location /jenkins {proxy_pass http://127.0.0.1:8999; }启动命令为
java -jar jenkins.war --httpPort=8999 --prefix=/jenkins浏览器访问地址为:
https://www.example.com/jenkins

5.复制初始密钥进行解锁Jenkins
cat /root/.jenkins/secrets/initialAdminPassword
# 获取到密钥直接填写到上面然后继续
6.选择安装推荐的插件,然后等待一会儿,插件安装错误不要管它。
一般都是网络或墙的问题导致插件下载安装失败,我们等会儿换个国内的插件源即可。
jenkins版本过低问题的话那就只能升级jenkins版本了。
- 可以在线升级Jenkins的版本(即下载war包)
- 如果是版本过低,打开系统管理即可看到,有提示让自动升级,选择即可
7.点击继续,创建管理员账户,然后一路点点点即可。
配置Jenkins
为Jenkins更换插件源
-
点击Jenkins主页面左侧列表中【系统管理】(Manage Jenkins)
-
点击纠正或者下拉找到【管理插件】(Manage Plugins)
-
选择【高级】(Advanced)选项卡
-
替换最下方【升级站点】中的URL
将
https://updates.jenkins.io/update-center.json
替换为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
这个也行
https://mirror.esuni.jp/jenkins/updates/update-center.json

设置jenkins时区
到用户-设置-用户自定义时区-Asia/Shanghai,路径为/user/laker/configure
安装插件
安装步骤:
- 打开Jenkins的首页,点击“Manage Jenkins”进入管理页面。
- 在左侧导航栏中选择“Manage Plugins”,然后点击“Available”选项卡。
- 在搜索框中输入“Maven Integration”,可以找到Maven插件,点击安装。
- 弹出一个确认框,点击“Install without restart”。
- 安装完成后,点击“Reload Configuration”重新加载Jenkins配置。
系统管理-插件管理-Available plugins
Maven Integration #新建任务发现没有maven的项目,需要去安装这个插件
Publish Over SSH #用于在构建过程中执行一系列远程操作,例如:从远程服务器获取代码、部署应用程序等。
Gitee #可以轻松地与Gitee代码托管平台集成,实现自动化的代码获取、构建和部署。
NodeJS #前端部署才需要
全局工具配置
系统管理-全局工具配置
- jdk:
/usr/lib/jvm/java-11-openjdk-amd64 - git:
/usr/bin/git - maven:
/usr/share/maven - nodejs:
/usr/include/node
添加Gitee凭证
要先安装Gitee插件
1. Gitee API 令牌
在系统管理-管理凭证中添加Gitee凭证,根据提示一步步操作即可,非常简单。
- 类型:Gitee API 令牌
用于拉取私有库代码。
2. 用户名密码凭证
- 类型:用户名和密码凭证
- 邮箱和密码
Gitee项目配置
在系统管理-系统配置-新增Gitee 配置
输入:
- 链接名:mall
- Gitee域名URL:https://gitee.com
- 证书令牌:选择上面添加的全局凭证
点击测试链接,会提示成功失败。
点击保存按钮。
如果出现保存出错,请去插件中心,升级所有插件。
部署后端
1.新建任务

2.配置源码管理
- Repo URL:https://xxxx.git。
- 凭证:可以用之前添加的用户名密码凭证,也可以直接点击添加按钮,添加一个凭证。
- 分支:制定能拉取哪些分支。

3.构建触发器
- 选择:Webhook触发构建 - 当仓库有推送代码等事件时触发自动构建。

4.到Gitee中添加WebHook

添加后,会出现测试按钮用于测试发送事件。
5.构建环境
勾选上对应的内容,将去做一些额外的处理,保持默认、
6.Pre Steps
在构建之前可以做的那些操作,在这个选项里面可以去添加一系列的脚本,保持默认。
7.配置编译
Root POM:这个pom,是相对于git的整体的目录的 pom.xml
Goals and options:clean package -Dmaven.test.skip=true
8.Post Steps
在项目构建完成之后,接下来需要做的内容
- 选择:Run only if build succeeds
脚本内容为:
# 停止当前Spring Boot应用,然后再次部署
PID=$(ps -ef | grep laker.jar | grep -v grep | awk '{ print $2 }')if [ ! -z "$PID" ]
thenkill $PID
fi
# 一定要带上BUILD_ID=xxx否则下面的nohup没启动成功就被杀掉了
BUILD_ID=dontKillMe
nohup java -jar /root/.jenkins/workspace/laker-springboot/laker-api/target/laker.jar >start.log 2>&1 &
点击保存按钮。
9.测试
在Gitee的上点击测试。
我发现这个测试并不能触发jenkins的构建,但是我提交了代码是可以触发的。
然后去jenkins上观察是否触发最新的构建以及构建日志。

相关文章:
Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目
文章目录 安装安装JDK安装Maven安装GitNodeJS安装(可选)安装Jenkins 配置Jenkins为Jenkins更换插件源设置jenkins时区安装插件全局工具配置添加Gitee凭证Gitee项目配置 部署后端1.新建任务2.配置源码管理3.构建触发器4.到Gitee中添加WebHook5.构建环境6.…...
延迟任务基于DeyalQueue
一,延迟任务应用场景? 一般用于处理订单,将redis中的数据延迟存入数据库,实现异步存储减少DB的压力 二, 延迟任务的实现方案有很多 DelayQueue Redisson MQ 时间轮 原理 JDK自带延迟队列,基于阻塞队列…...
Linux 查询端口被占用命令
Linux 查询端口被占用命令 1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进…...
【c++】string类---标准库中的string类
1. 为什么要学习string类 1.1 C语言中的字符串 C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且…...
GO语言学习笔记(与Java的比较学习)(五)
Map 概念 map 是引用类型,可以使用如下声明: var map1 map[keytype]valuetype var map1 map[string]int 在声明的时候不需要知道 map 的长度,map 是可以动态增长的。 未初始化的 map 的值是 nil(即零值为nil)&…...
Sora:探索大型视觉模型的前世今生、技术内核及未来趋势
Sora,一款由OpenAI在2024年2月推出的创新性文生视频的生成式AI模型,能够依据文字说明,创作出既真实又富有想象力的场景视频,展现了其在模拟现实世界方面的巨大潜能。本文基于公开技术文档和逆向工程分析,全面审视了Sor…...
基于springboot实现图书馆管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现图书馆管理系统演示 摘要 电脑的出现是一个时代的进步,不仅仅帮助人们解决了一些数学上的难题,如今电脑的出现,更加方便了人们在工作和生活中对于一些事物的处理。应用的越来越广泛,通过互联网我们可以更方便地…...
MATLAB环境下基于高斯滤波器-广义拉普拉斯算子的细胞核自动检测
作为病理图像分析的基础,细胞核检测可为细胞形态、纹理等多种相关分析提供支持,对于临床诊断具有重要意义。但是细胞核的人工识别过程十分费时费力,并且不同医生之间存在主观标注差异。因此,利用计算机技术进行自动检测能够更为客…...
【探索AI】十一 深度学习之第1周:深度学习概述与基础
深度学习概述与基础 深度学习的发展历史与现状神经网络的基本原理前向传播与反向传播算法常见的激活函数与优化算法深度学习框架(如TensorFlow或PyTorch)进行基础操作 深度学习的发展历史与现状 深度学习的发展历史可以追溯到上世纪40年代,当…...
【简说八股】Spring事务失效可能是哪些原因?
Spring事务介绍 Spring事务是指在Spring框架中对数据库操作进行管理的一种机制,它确保一组数据库操作要么完全执行成功(提交),要么完全不执行(回滚),从而保持数据一致性和完整性。 Spring框架…...
【语音识别】- CTC损失计算的原理
文章目录 1.符号定义与目标函数2.前向计算 α s ( t ) \alpha_s(t) α...
MySQL字符集和比较规则
MySQL字符集和比较规则 字符集和比较规则简介 字符集: 描述字符与二进制数据的映射关系 比较规则:比较指定字符集中的字符的规则 字符集 我们知道,计算机无法直接存储字符串,实际存储的都是二进制数据。字符集是有限的ÿ…...
备忘录模式(Memento Pattern)
定义 备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在以后将对象恢复到该状态。备忘录模式通常用于实现撤销操作(Undo)或历史记录(H…...
LeetCode 刷题 [C++] 第121题.买卖股票的最佳时机
题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…...
ORACLE 基础
一.ORACLE简介 1.1什么是oracle ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。…...
Adobe illustrator CEP插件调试
1.创建插件CEP面板,可以参考:http://blog.nullice.com/%E6%8A%80%E6%9C%AF/CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/%E6%8A%80%E6%9C%AF-CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B-Adobe-CEP-%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8…...
学会玩游戏,智能究竟从何而来?
最近在读梅拉妮米歇尔《AI 3.0》第三部分第九章,谈到学会玩游戏,智能究竟从何而来? 作者: [美] 梅拉妮米歇尔 出版社: 四川科学技术出版社湛庐 原作名: Artificial Intelligence: A Guide for Thinking Humans 译者: 王飞跃 / 李玉珂 / 王晓…...
Unity 常用操作
2D素材网站 https://craftpix.net/ https://itch.io/game-assets/tag-2d/tag-backgrounds 3D素材资源网址 https://www.mixamo.com/#/ 场景常用操作: 快捷键:QWER Q:Q键或鼠标中键,可以拉动场景。 W:选中物体后&…...
【计算机网络_应用层】协议定制序列化反序列化
文章目录 1. TCP协议的通信流程2. 应用层协议定制3. 通过“网络计算器”的实现来实现应用层协议定制和序列化3.1 protocol3.2 序列化和反序列化3.2.1 手写序列化和反序列化3.2.2 使用Json库 3.3 数据包读取3.4 服务端设计3.5 最后的源代码和运行结果 1. TCP协议的通信流程 在之…...
Doris实战——银联商务实时数仓构建
目录 前言 一、应用场景 二、OLAP选型 三、实时数仓构建 四、实时数仓体系的建设与实践 4.1 数仓分层的合理规划 4.2 分桶分区策略的合理设置 4.3 多源数据迁移方案 4.4 全量与增量数据的同步 4.5 离线数据加工任务迁移 五、金融级数仓稳定性最佳实践 5.1 多租户资…...
从原理到实战:一文读懂主流交叉验证技术及其Python/R实现
1. 交叉验证的本质与价值 第一次听说"交叉验证"这个词时,我正被一个电商用户流失预测项目折磨得焦头烂额。当时在测试集上的准确率像过山车一样忽高忽低,直到 mentor 扔给我一句:"你该试试 K 折交叉验证"。这个简单的改变…...
深入解析航顺HK32F030C8T6与STM32F030的兼容性差异及实战调优
1. 航顺HK32F030C8T6与STM32F030的硬件差异解析 第一次拿到航顺HK32F030C8T6这颗国产MCU时,我下意识以为它和STM32F030可以完全互换。但实际在智能家居项目中踩坑后才发现,两者的硬件差异远比想象中多。最明显的区别就是主频——STM32F030最高只能跑到48…...
OpenClaw文件管理机器人:千问3.5-9B智能归类200+技术文档
OpenClaw文件管理机器人:千问3.5-9B智能归类200技术文档 1. 为什么需要文件管理机器人 我的下载文件夹已经变成了一个数字黑洞——里面堆积着超过200份未分类的技术文档,包括PDF白皮书、Markdown笔记、代码片段和会议录音。每次寻找特定文件都需要在混…...
【自然语言处理 NLP】7.1.2 表示工程与推理监控
目录 7.1.2.1 表示工程(Representation Engineering, RepE) 7.1.2.2 思维链忠实性评估 7.1.2.3 模型内部搜索机制 第二部分:结构化伪代码 算法6:Control Vectors提取与ActAdd干预 算法7:CoT逻辑一致性验证 算法8…...
第6章 黎曼流形优化与几何方法
第6章 黎曼流形优化与几何方法 6.1 黎曼几何基础 6.1.1 复Stiefel流形与单位模流形(Unit-Modulus Manifold)度量 6.1.2 指数映射(Exponential Mapping)与平行移动(Parallel Transport) 6.1.3 测…...
从MD5到BCrypt:深入解析加密算法的选择与应用场景
1. 加密算法的基本分类与核心差异 第一次接触加密算法时,我被各种缩写搞晕了头。MD5、SHA、AES、RSA...这些看起来像天书的名词,其实可以分为几个清晰的类别。就像整理衣柜要分季节和用途一样,选择加密算法也需要先了解它们的本质区别。 所有…...
旋转变压器:从电磁耦合到高精度位置解算的工程实践
1. 旋转变压器:工业自动化的"角度翻译官" 第一次接触旋转变压器是在五年前的伺服电机调试现场,当时电机总是出现位置漂移,排查了半天才发现是旋变信号解算出了问题。这种看似简单的电磁元件,实则是工业自动化系统中不可…...
手把手教你将YOLOv10模型部署到RK3588开发板(含Docker环境搭建与模型转换避坑指南)
从零部署YOLOv10到RK3588开发板:完整流程与实战避坑指南 边缘计算设备上的AI模型部署正成为工业检测、智能安防等场景的核心需求。RK3588作为一款高性能AIoT芯片,其6TOPS算力与丰富接口使其成为边缘AI的理想载体。本文将详解YOLOv10模型在RK3588平台的完…...
超越系统默认:ImageGlass如何重新定义图像浏览体验
超越系统默认:ImageGlass如何重新定义图像浏览体验 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 当你下载了一张HEIC格式的照片却无法打开,或是处…...
基于模型参考自适应系统的改进滑模观测器:反电势优化方法及其仿真模型
基于模型参考自适应系统的改进滑模观测器 1.采用基于模型参考自适应系统的反电势优化方法,对SMO中低通滤波后的反电势进一步优化,从而减小抖振,提高转速和位置估计精度; 2.提供算法对应的参考文献和仿真模型。滑膜观测器这玩意儿在…...
