Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目

文章目录

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

jenkins需要java环境,注意不同的jenkins版本对应的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

sh 复制代码
# 更新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版本可以按照下面方式切换。

sh 复制代码
sudo update-alternatives --config java
sudo update-alternatives --config javac

安装Maven

sh 复制代码
sudo apt install maven
mvn -v
whereis maven

maven目录一般在/usr/share/maven

配置中央仓库

修改maven的setting指向阿里云

sh 复制代码
vim /usr/share/maven/conf/settings.xml

mirrors下添加mirror

xml 复制代码
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
      <mirrorOf>*</mirrorOf>        
    </mirror>

安装Git

sh 复制代码
sudo apt-get install git
which git
whereis git

NodeJS安装(可选)

不安装vue等前端项目则不需要安装这个。

sh 复制代码
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/

sh 复制代码
# 用这个也很快,只需要改路径中的版本即可
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配置为

nginx 复制代码
location /jenkins {
 proxy_pass http://127.0.0.1:8999;
}

启动命令为

sh 复制代码
java -jar jenkins.war --httpPort=8999 --prefix=/jenkins

浏览器访问地址为:

https://www.example.com/jenkins

5.复制初始密钥进行解锁Jenkins

sh 复制代码
cat /root/.jenkins/secrets/initialAdminPassword
# 获取到密钥直接填写到上面然后继续

6.选择安装推荐的插件,然后等待一会儿,插件安装错误不要管它。

一般都是网络或墙的问题导致插件下载安装失败,我们等会儿换个国内的插件源即可。

jenkins版本过低问题的话那就只能升级jenkins版本了。

  • 可以在线升级Jenkins的版本(即下载war包)
  • 如果是版本过低,打开系统管理即可看到,有提示让自动升级,选择即可

7.点击继续,创建管理员账户,然后一路点点点即可。

配置Jenkins

为Jenkins更换插件源

  • 点击Jenkins主页面左侧列表中【系统管理】(Manage Jenkins)

  • 点击纠正或者下拉找到【管理插件】(Manage Plugins)

  • 选择【高级】(Advanced)选项卡

  • 替换最下方【升级站点】中的URL

ini 复制代码
将
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

ini 复制代码
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

脚本内容为

sh 复制代码
# 停止当前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上观察是否触发最新的构建以及构建日志。

相关推荐
青木沐26 分钟前
Jenkins介绍
运维·jenkins
明 庭2 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
猿小蔡-Cool2 小时前
ubuntu20.04安装imwheel实现鼠标滚轮调速
ubuntu
过过过呀Glik2 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
PyAIGCMaster4 小时前
ubuntu装P104驱动
linux·运维·ubuntu
野蛮的大西瓜4 小时前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
zzzhpzhpzzz4 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
只会copy的搬运工5 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
o(╥﹏╥)5 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
娶不到胡一菲的汪大东5 小时前
Ubuntu概述
linux·运维·ubuntu