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 多租户资…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...