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 多租户资…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
