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://xiahunao.cn/news/2812164.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB环境下基于分形理论的图像处理研究

分形理论的提出走出了传统整数维度空间的束缚&#xff0c;对物体的描述更加符合自然事物的复杂性与多样性。传统的维度空间是整数的&#xff0c;人们会将空间认为是三维的&#xff0c;平面认定为是二维的&#xff0c;直线是一维的&#xff0c;点被认为是零维的。而这种维度空间…

算法【线性表的查找-顺序查找】

线性表的查找-顺序查找 顺序查找基本思想应用范围顺序表的表示数据元素类型定义查找算法示例分析 时间效率分析顺序查找的特点如何提高查找效率 顺序查找 基本思想 在表的多种结构定义方式中&#xff0c;线性表是最简单的一种。而顺序查找是线性表查找中最简单的一种。 顺序查…

设计模式-结构型模式-组合模式

组合模式&#xff08;Composite Pattern&#xff09;&#xff1a;组合多个对象形成树形结构以表示具有“部分—整体”关系的层次结构。组合模式对单个对象&#xff08;即叶子对象&#xff09;和组合对象&#xff08;即容器对象&#xff09;的使用具有一致性&#xff0c;又可以称…

Vue 实现页面导出A4标准大小的PDF文件,以及处理图片跨域不能正常展示的问题等

效果预览&#xff1a; 代码流程&#xff1a;首先在utils文件夹下创建htmlToPdf的js工具文件&#xff0c;然后在main.js中注册引用 htmlToPdf.js // 导出页面为PDF格式 import html2Canvas from html2canvas import JsPDF from jspdfexport default {install(Vue, options) {V…

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型&#xff08;Self-supervised Learning&#xff09;&#xff0c;也叫基石模型&#xff08;foundation modle&#xff09;。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…

SkyWalking微服务链路追踪实战

目录 skywalking是什么&#xff1f; Skywalking主要功能特性 Skywalking整体架构 SkyWalking 环境搭建部署 SkyWalking快速开始 SkyWalking Agent追踪微服务 通过jar包方式接入 在IDEA中使用Skywalking Skywalking跨多个微服务追踪 Skywalking集成日志框架 Skywalki…

简单聊聊现在的AI

简单聊聊现在的AI 前言主要的AI模型和形式LLM - Large Language Model&#xff08;大语言模型&#xff09;BOT&#xff08;机器人&#xff09;LAM - Large Action Models&#xff08;大行动模型&#xff09;Agent&#xff08;智能体&#xff09; 结尾 前言 好久没回来写博客&a…

华为云软件开发生产线CodeArts前端DevOps实践

原文链接&#xff1a;CodeArts前端DevOps实践_软件开发生产线 CodeArts_理论实践_DevOps概览 本文主要以CodeArts产品自身为背景&#xff0c;简要介绍一些在前端性能优化方面的优秀实践方法和常见问题。 在开始本文的内容之前&#xff0c;先简单介绍一下华为云CodeArts。Code…

【Linux】head命令使用

head命令 head是一个在 Unix 和 Unix-like 操作系统中常用的命令行工具&#xff0c;用于输出文件的前 n 行。默认为 10&#xff0c;即显示 10 行的内容。 语法 head [options] [file(s)] head命令 -Linux手册页 选项及作用 执行令 &#xff1a; head --help 执行命令结果…

Linux按键输入实验-创建按键的设备节点

一. 简介 Linux内核针对 GPIO驱动开发,提供了 pinctrl子系统与gpio子系统,方便了 GPIO驱动程序的开发。 本文开始学习如何利用 Linux内核的 pinctrl子系统,与 gpio子系统提供的 API函数,开发按键驱动。 这里主要学习在设备树文件中创建按键的设备节点。 二. Linux按键…

Springboot中如何记录好日志

Springboot中如何记录日志 日志体系整体介绍 日志一直在系统中占据这十分重要的地位&#xff0c;他是我们在系统发生故障时用来排查问题的利器&#xff0c;也是我们做操作审计的重要依据。那么如何记录好日志呢&#xff1f;选择什么框架来记录日志&#xff0c;是不是日志打越…

全域增长方法论:帮助品牌实现科学经营,助力长效生意增长

前两年由于疫情反复、供给需求收缩等条件制约&#xff0c;品牌业务均受到不同程度的影响。以双十一和618电商大促为例&#xff0c;就相比往年颇显“惨淡”&#xff0c;大多品牌营销都无法达到理想预期。 随着市场环境不断开放&#xff0c;2023年营销行业开始从低迷期走上了高速…

Flutter SDK 常见问题

镜像配置 配置pub服务的镜像地址&#xff1a; export PUB_HOSTED_URLhttps://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 第一次运行项目很慢&#xff0c;搜索整个Flutter SDK项目&#xff0c;使用以下内容替换google和mavenCentral仓…

逆序或者正序打印一个数的每一位数,递归实现(C语言)

从键盘上输入一个不多于5位&#xff08;包括5位&#xff09;的正整数&#xff0c;要求 &#xff08;1&#xff09;求出它是几位数&#xff1b;&#xff08;2&#xff09;分别输出每一位数字&#xff08;3&#xff09;按逆序输出各位数字 &#xff08;1&#xff09;求出它是几位…

时间序列分析实战(五):ARIMA加法(疏系数)模型建模

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

React PureComponent 和 React.memo()区别

1 注意 ● PureComponent和memo仅作为性能优化的方式存在 ● 不要依赖它来阻止渲染&#xff0c;会产生BUG ● PureComponnet 和memo 都是通过对 props 值的浅比较来决定该组件是否需要更新的。 2 PureComponent 和React.memo() 区别 PureComponent 和React.memo()都是React优化…

基于Springboot + Vue 母婴商城系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

国家电网相关信息收集

国家电网有限公司招聘平台--首页 (sgcc.com.cn) 这是官方唯一招聘网站平台 国家电网最新组织机构&#xff08;总部、分部、27家省公司、40家直属单位&#xff09; - 知乎 (zhihu.com) 总部招聘&#xff1a; 我的评价&#xff1a;总部在北京&#xff0c;而且只招几个&#xff…

Studio One6.6.1有哪些新功能以及2024安装教程操作系统的要求

Studio One 6.6.1是一款专业的音频编辑和制作软件&#xff0c;它具有强大的音频编辑和混音引擎以及用户友好的界面。它支持多种音频文件格式和VST插件&#xff0c;是一款专业音乐制作人员和录音师不可或缺的工具。如果你是一位Mac用户&#xff0c;你一定会发现在处理音乐制作和…

Perplexity.ai为大型语言模型(LLM)时代重新设计谷歌搜索引擎优化(SEO)模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…