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上观察是否触发最新的构建以及构建日志。

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

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

相关文章

RISC-V指令集之RV32C

RISC-V指令集之RV32C 1 指令格式2 RV32C的指令 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 指令格式 RV32C&#xff08;压缩指令&#xff09;的意义&#xff1a; RV32C基于32位寄存器的RISC-V架构&#xff0c;同时增加了压缩指令集&#xf…

RV64 - 64位地址指令

RV64 - 64位地址指令 1 RV64G介绍2 RV64G增加的指令 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 RV64G介绍 RV32I RV32M RV32A RV32F RV32D RV32G&#xff0c;那么RV32G 指令的64 位版本 – RV64G 指令&#xff0c;其示意图&#xff0…

300分钟吃透分布式缓存-08讲:MC系统架构是如何布局的?

系统架构 我们来看一下 Mc 的系统架构。 如下图所示&#xff0c;Mc 的系统架构主要包括网络处理模块、多线程处理模块、哈希表、LRU、slab 内存分配模块 5 部分。Mc 基于 Libevent 实现了网络处理模块&#xff0c;通过多线程并发处理用户请求&#xff1b;基于哈希表对 key 进…

ETH Denver见!来参加DAO的领袖和爱好者的活动吧

我们将和 DAOBase 在美国丹佛举办 DAO 领袖和爱好者的盛会——“去中心化对话&#xff1a;DAO 治理的新时代”活动&#xff01; 随着加密货币和区块链技术的快速发展&#xff0c;DAO 已成为数字经济不可或缺的一部分。目前&#xff0c;已有超过 10 万个 DAO&#xff0c;拥有超…

pageHelper分页查询

文章目录 前言一、集成1.引入库2.配置yml 二、编码1.Controller2.Service3.Mapper4.Mapper.xml5.StudentResult 三、测试1.根据页码和页数2.根据name 总结 前言 本篇文章介绍在java中使用pageHelper完成分页的功能。 使用的数据库为mysql,持久层框架mybatis。 一、集成 1.引入…

★【递归】【构造二叉树】Leetcode 106.从中序与后序遍历序列构造二叉树

★【递归】【构造二叉树】Leetcode 106.从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 106.从中序与后序遍历序列构造二叉树:star:思路分析递归解法 105. 从前序与中序遍历序列构造二叉树递归解法 ---------------&#x1f388;&#x1f388;题目链接&a…

PSA制氧装置的基本原理及在医疗领域的应用现状

随着医疗技术的不断进步&#xff0c;PSA(Pressure Swing Adsorption&#xff0c;变压吸附)制氧装置在医疗领域的应用日益广泛&#xff0c;其高效、安全、便捷的特点为现代医疗带来了革命性的变化。恒业通将从PSA制氧装置的基本原理出发&#xff0c;深入探讨其在医疗领域的应用现…

modbus-tcp协议详解

本文参考&#xff1a;Modbus协议中文版【完整版】.pdf&#xff0c;加上自己的理解的记录&#xff0c;该文章主要讲modbus-TCP协议。&#xff08;文档下载链接&#xff1a;【免费】modbus协议中文详细解释文档资源-CSDN文库&#xff09; 本系列文章分为三章&#xff1a; 1.mod…

蓝桥杯-标题统计

知识点: 关键是考察getline的作用 #include <iostream> using namespace std; int main() { string a; int t0; getline(cin,a);//每次读取一整行并把Enter键生成的换行符抛弃 for(int i0;i<a.length();i){ if(a[i]! )t; } cout<<t; return …

搜维尔科技:第九届元宇宙数字人大赛,参赛小组报名确认公告

各位参赛选手大家好&#xff0c;近期已收到新增报名信息如下表&#xff0c;请各位参赛选手确认&#xff0c;如果信息有误或信息不完整请电话联系赛务组工作人员进行更正 随着元宇宙时代的来临&#xff0c;数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划…

一个Post请求入门NestJS的路由与控制器

​ NestJS的控制器 控制器负责处理传入请求并向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。 通常&#xff0c;每个控制器都有不止一条路由&#xff0c;不同的路由可以执行不同的操作。 在使用了脚手架的项目中&#xff0c;我…

牛客周赛 Round 34 解题报告 | 珂学家 | 构造思维 + 置换环

前言 整体评价 好绝望的牛客周赛&#xff0c;彻底暴露了CF菜菜的本质&#xff0c;F题没思路&#xff0c;G题用置换环骗了50%, 这大概是唯一的亮点了。 A. 小红的字符串生成 思路: 枚举 a,b两字符在相等情况下比较特殊 a, b input().split() if a b:print (2)print (a)pri…