当前位置: 首页 > news >正文

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 212.426.1 (November 2023)2.419 (August 2023)
Java 11 or Java 172.361.1 (September 2022)2.357 (June 2022)
Java 8, Java 11, or Java 172.346.1 (June 2022)2.340 (March 2022)
Java 8 or Java 112.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安装&#xff08;可选&#xff09;安装Jenkins 配置Jenkins为Jenkins更换插件源设置jenkins时区安装插件全局工具配置添加Gitee凭证Gitee项目配置 部署后端1.新建任务2.配置源码管理3.构建触发器4.到Gitee中添加WebHook5.构建环境6.…...

延迟任务基于DeyalQueue

一&#xff0c;延迟任务应用场景&#xff1f; 一般用于处理订单&#xff0c;将redis中的数据延迟存入数据库&#xff0c;实现异步存储减少DB的压力 二&#xff0c; 延迟任务的实现方案有很多 DelayQueue Redisson MQ 时间轮 原理 JDK自带延迟队列&#xff0c;基于阻塞队列…...

Linux 查询端口被占用命令

Linux 查询端口被占用命令 1、lsof -i:端口号 用于查看某一端口的占用情况&#xff0c;比如查看8000端口使用情况&#xff0c;lsof -i:8000 lsof -i:8080&#xff1a;查看8080端口占用 lsof abc.txt&#xff1a;显示开启文件abc.txt的进程 lsof -c abc&#xff1a;显示abc进…...

【c++】string类---标准库中的string类

1. 为什么要学习string类 1.1 C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列 库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且…...

GO语言学习笔记(与Java的比较学习)(五)

Map 概念 map 是引用类型&#xff0c;可以使用如下声明&#xff1a; var map1 map[keytype]valuetype var map1 map[string]int 在声明的时候不需要知道 map 的长度&#xff0c;map 是可以动态增长的。 未初始化的 map 的值是 nil&#xff08;即零值为nil&#xff09;&…...

Sora:探索大型视觉模型的前世今生、技术内核及未来趋势

Sora&#xff0c;一款由OpenAI在2024年2月推出的创新性文生视频的生成式AI模型&#xff0c;能够依据文字说明&#xff0c;创作出既真实又富有想象力的场景视频&#xff0c;展现了其在模拟现实世界方面的巨大潜能。本文基于公开技术文档和逆向工程分析&#xff0c;全面审视了Sor…...

基于springboot实现图书馆管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现图书馆管理系统演示 摘要 电脑的出现是一个时代的进步&#xff0c;不仅仅帮助人们解决了一些数学上的难题&#xff0c;如今电脑的出现&#xff0c;更加方便了人们在工作和生活中对于一些事物的处理。应用的越来越广泛&#xff0c;通过互联网我们可以更方便地…...

MATLAB环境下基于高斯滤波器-广义拉普拉斯算子的细胞核自动检测

作为病理图像分析的基础&#xff0c;细胞核检测可为细胞形态、纹理等多种相关分析提供支持&#xff0c;对于临床诊断具有重要意义。但是细胞核的人工识别过程十分费时费力&#xff0c;并且不同医生之间存在主观标注差异。因此&#xff0c;利用计算机技术进行自动检测能够更为客…...

【探索AI】十一 深度学习之第1周:深度学习概述与基础

深度学习概述与基础 深度学习的发展历史与现状神经网络的基本原理前向传播与反向传播算法常见的激活函数与优化算法深度学习框架&#xff08;如TensorFlow或PyTorch&#xff09;进行基础操作 深度学习的发展历史与现状 深度学习的发展历史可以追溯到上世纪40年代&#xff0c;当…...

【简说八股】Spring事务失效可能是哪些原因?

Spring事务介绍 Spring事务是指在Spring框架中对数据库操作进行管理的一种机制&#xff0c;它确保一组数据库操作要么完全执行成功&#xff08;提交&#xff09;&#xff0c;要么完全不执行&#xff08;回滚&#xff09;&#xff0c;从而保持数据一致性和完整性。 Spring框架…...

【语音识别】- CTC损失计算的原理

文章目录 1.符号定义与目标函数2.前向计算 α s ( t ) \alpha_s(t) α...

MySQL字符集和比较规则

MySQL字符集和比较规则 字符集和比较规则简介 字符集&#xff1a; 描述字符与二进制数据的映射关系 比较规则&#xff1a;比较指定字符集中的字符的规则 字符集 我们知道&#xff0c;计算机无法直接存储字符串&#xff0c;实际存储的都是二进制数据。字符集是有限的&#xff…...

备忘录模式(Memento Pattern)

定义 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装性的前提下捕获一个对象的内部状态&#xff0c;并在以后将对象恢复到该状态。备忘录模式通常用于实现撤销操作&#xff08;Undo&#xff09;或历史记录&#xff08;H…...

LeetCode 刷题 [C++] 第121题.买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…...

ORACLE 基础

一.ORACLE简介 1.1什么是oracle ORACLE 数据库系统是美国 ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。…...

Adobe illustrator CEP插件调试

1.创建插件CEP面板&#xff0c;可以参考&#xff1a;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》第三部分第九章&#xff0c;谈到学会玩游戏&#xff0c;智能究竟从何而来&#xff1f; 作者: [美] 梅拉妮米歇尔 出版社: 四川科学技术出版社湛庐 原作名: 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/#/ 场景常用操作&#xff1a; 快捷键&#xff1a;QWER Q&#xff1a;Q键或鼠标中键&#xff0c;可以拉动场景。 W&#xff1a;选中物体后&…...

【计算机网络_应用层】协议定制序列化反序列化

文章目录 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 多租户资…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...