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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++——基础语法(3):内联函数、auto关键字、基于范围的for循环、空指针nullptr

6. 内联函数 在函数前加入inline修饰即可将函数变为内联函数。所谓内联函数&#xff0c;就是在编译时C编译器会将函数体在调用内联函数的地方展开&#xff0c;从而省去了调用函数的栈帧开销&#xff0c;提高程序运行效率。 inline int Add(int a, int b) {return a b; } int …

十一、计算机视觉-膨胀操作

文章目录 前言一、什么是膨胀二、膨胀操作的实现1.引入库 三、膨胀的原理 前言 上节我们学习了腐蚀操作&#xff0c;本节我们讲一下膨胀操作&#xff0c;膨胀和腐蚀实际上是相反的操作。上节我们把云峰这2个字周围没用的像素去掉了&#xff0c;但是云峰这2个字也变细了&#x…

Protocol Buffer-nanopb介绍

文章目录 一、需求二、环境三、相关概念3.1 protocol buffer介绍3.2 nanopb&#xff08;支持C语言&#xff09;3.3 proto文件 四、proto基本语法4.1 proto文件的定义4.2 字段规则4.3 字段类型4.4 字段编号4.5 proto语法4.6 进阶语法4.6.1 message嵌套4.6.2 enum关键字4.6.3 one…

【Flink精讲】Flink状态及Checkpoint调优

RocksDB大状态调优 RocksDB 是基于 LSM Tree 实现的&#xff08;类似 HBase&#xff09; &#xff0c;写数据都是先缓存到内存中&#xff0c; 所以 RocksDB 的写请求效率比较高。 RocksDB 使用内存结合磁盘的方式来存储数据&#xff0c;每 次获取数据时&#xff0c;先从内存中 …

什么是高可用架构

一、什么是高可用 在运维中&#xff0c;经常听到高可用&#xff0c;那么什么是高可用架构呢&#xff1f;通俗点讲&#xff0c;高可用就是在服务故障&#xff0c;节点宕机的情况下&#xff0c;业务能够保证不中断&#xff0c;服务正常运行。 举个例子&#xff0c;支付宝&#…

GS069——直流有刷电机调速电路 通过外接电阻网络,改变与之相接的 VMOS 管的输出,达到控制电动工具 转速的作用。 功耗小,电源电压范围宽。

GS069电动工具直流调速电路是CMOS专用集成电路&#xff0c;具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络&#xff0c;改变与之相接 的VMOS 管的输出&#xff0c;达到控制电动工具转速的作用。该电路输出幅值宽&#xff0c; 频率变化小&#xff0c;占空比…

vue ts html 中如何遍历 Enum 类型构建页面结构

vue ts html 中如何遍历 Enum 类型构建页面结构 一、需求 定义了一个 Enum 用来标记菜单类型&#xff1a; enum EnumMenuType {目录 1,菜单,按钮,外链 }你得 Enum 知道它的序号是随第一个定义的值自动增长的 现在想在 ElementUI 界面的 radio-group 中遍历它&#xff0c;…

聚集高速托盘类四向穿梭车ASRV|一车跑全仓可获得10000个货位的HEGERLS智能搬运机器人

随着国内外制造业加速转型升级&#xff0c;越来越多的企业需要进行物流智能化升级&#xff0c;但是往往受到仓库面积、高度、形状等现实条件的限制&#xff0c;以及市场不确定性因素的影响。因此&#xff0c;相对于投资传统的自动化立体库&#xff0c;企业更倾向于选择智能化、…

HarmonyOS—低代码开发Demo示例

接下来为大家展示一个低代码开发的JS工程的Demo示例&#xff0c;使用低代码开发如下华为手机介绍列表的HarmonyOS应用/服务示例。 1.删除模板页面中的控件后&#xff0c;选中组件栏中的List组件&#xff0c;将其拖至中央画布区域&#xff0c;松开鼠标&#xff0c;实现一个List组…

[设计模式Java实现附plantuml源码~行为型] 撤销功能的实现——备忘录模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

formality:set_constant应用

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: formality:形式验证流程 scan mode func的功能检查需要把scan mode设置成0。

python Matplotlib Tkinter-->导出pdf报表

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 reportlab 4.0.9 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox impor…

逆变器专题(9)-光伏并网逆变器PQ控制

相应仿真原件请移步资源下载 原理 跟网型并网逆变器通常采用PQ功率环并网&#xff0c;采用功率环并网通常可以进行设计其功率因数 如图所示&#xff0c;通过控制有功功率、无功功率的值&#xff0c;即可实现对功率因数的控制&#xff0c;通常情况下在并网时可将无功功率控为0&…

虚拟机JVM

虚拟机 1、定义jvm 假想计算机 运行在操作系统之上 和硬件之间没有直接交互 包括 一套字节码指令、寄存器、栈、垃圾回收、堆 一个存储方法域 jvm:承担一个翻译工作&#xff0c;动态的将java代码编译成操作系统可以识别的机器码。 从软件层面屏蔽了不同操作系统在底层硬件与指…

js实现鼠标拖拽改变div大小的同时另一个div宽度也变化

实现效果如下图所示 源码如下 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box {width: 100%;height: 300px; display: flex;}/*左侧div样式*/.left {width: calc(30% - 5px); /*左侧初始…

naive-ui-admin BasicTable 列表操作栏显示图标icon

效果图 在使用BasicTable的页面添加引用&#xff0c;这里随便弄了个icon import { GameController } from "vicons/ionicons5" 自定义列 const actionColumn reactive({width: 180,title: "操作",key: "action",fixed: "right",ren…

【高德地图】Android高德地图控件交互详细介绍

&#x1f4d6;第5章 与地图控件交互 ✅控件交互&#x1f9ca;缩放按钮&#x1f9ca;指南针&#x1f9ca;定位按钮&#x1f9ca;地图Logo ✅手势交互&#x1f9ca;缩放手势&#x1f9ca;滑动手势&#x1f9ca;旋转手势&#x1f9ca;倾斜手势&#x1f9ca;指定屏幕中心点的手势操…

Facebook的虚拟社交愿景:元宇宙时代的新起点

在当今数字化时代&#xff0c;社交媒体已经成为人们生活中不可或缺的一部分。而随着科技的不断进步和社会的发展&#xff0c;元宇宙已经成为了人们关注的热点话题之一。作为社交媒体的领军企业之一&#xff0c;Facebook也在积极探索虚拟社交的未来&#xff0c;将其视为元宇宙时…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中&#xff0c;Facebook作为先行者和领导者&#xff0c;对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献&#xff0c;以及它对在…