• Jenkins 发布 Gitee 上的 SpringBoot 项目全过程(详细)


    文章说明

    本篇文章记录 Jenkins 发布 Gitee 上的 SpringBoot 项目全过程,内容包括 JDK 安装和配置、Maven 安装和配置、Git 安装和配置、Jenkins 部署 SpringBoot 项目的过程、编写项目启动和重启的脚本,通过 Jenkins 实现一键部署项目的功能。

    安装所需的环境,如:JDK、Git 等,如果使用 dnf 或 yum,安装过程将会是非常方便,但是在后期要对这些环境进行管理,那将会是比较头疼。为了以后能更加方便的管理这些环境,下面只展示源码安装。如果觉得步骤繁琐,也可以自行使用 dnf 或 yum 安装环境。

    本次记录所使用的系统为:腾讯云 CentOS Stream 8 64位,本次操作都是基于 root 用户操作。

    安装 JDK 环境

    无论是发布 Jenkins 还是发布 SpringBoot 项目,都依赖于 JDK 环境。对于 JDK 版本建议使用 JDK 1.8,下面是安装和配置 JDK 1.8 的步骤。

    下载 JDK8 安装包:https://www.oracle.com/java/technologies/downloads/#java8
    在这里插入图片描述
    下载好后将 JDK 安装包上传到 CentOS 机器中。
    在这里插入图片描述
    将其解压到 /usr/local 目录下。

    tar -zxvf jdk-8u321-linux-x64.tar.gz -C /usr/local/
    
    • 1

    配置 JDK 的环境:

    vim /etc/profile
    
    • 1

    在尾部添加下面内容:( JAVA_HOME 是解压后的 JDK 路径)

    export JAVA_HOME=/usr/local/jdk1.8.0_321
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    重新加载配置文件:

    source /etc/profile
    
    • 1

    检查 JDK 是否完成配置环境

    java -version
    javac -version
    
    • 1
    • 2

    在这里插入图片描述
    如果能正常显示 JDK 的版本号就说明已经完成了 JDK 的环境配置。如果没有正常显示,请重新按照步骤操作。

    安装 Maven 环境

    要实现 Jenkins 自动安装和部署 SpringBoot 项目,那么就得需要安装和配置 Mavne 环境,下面是安装和配置 Mavne 环境的步骤。

    下载 Maven 安装包:https://maven.apache.org/download.cgi
    在这里插入图片描述
    下载好后将 Maven 安装包上传到 CentOS 机器中。
    在这里插入图片描述
    将其解压到 /usr/local 目录下:

    tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/
    
    • 1

    配置 Maven 的环境:

    vim /etc/profile
    
    • 1

    在尾部添加下面内容:( MAVEN_HOME 是解压后的 Maven 路径)

    export MAVEN_HOME=/usr/local/apache-maven-3.8.6
    export PATH=$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2

    在这里插入图片描述
    加载配置文件:

    source /etc/profile
    
    • 1

    检查 Maven:

    mvn -version
    
    • 1

    在这里插入图片描述
    修改 Maven 依赖包的路径、修改 Maven 的仓库地址为阿里云仓库的地址:

    vim /usr/local/apache-maven-3.8.6/conf/settings.xml
    
    • 1

    在 settings 下配置 localRepository 的目录:

    /usr/local/maven-repository
    
    • 1

    在这里插入图片描述
    删除或注释 mirrors 里面的内容:
    在这里插入图片描述
    将 mirrors 标签下改为以下内容:

    
      alimaven
      central
      aliyun maven
      http://maven.aliyun.com/nexus/content/repositories/central/
    
    
      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      central
    
    
      central
      Maven Repository Switchboard
      http://repo1.maven.org/maven2/
      central
    
    
      repo2
      central
      Human Readable Name for this Mirror.
      http://repo2.maven.org/maven2/
    
    
      ibiblio
      central
      Human Readable Name for this Mirror.
      http://mirrors.ibiblio.org/pub/mirrors/maven2/
    
    
      jboss-public-repository-group
      central
      JBoss Public Repository Group
      http://repository.jboss.org/nexus/content/groups/public
    
    
      google-maven-central
      Google Maven Central
      https://maven-central.storage.googleapis.com
      central
    
    
    
      maven.net.cn
      oneof the central mirrors in china
      http://maven.net.cn/content/groups/public/
      central
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    在这里插入图片描述

    安装 Git 环境

    要实现 Jenkins 自动发布 Gitee 上的项目,那么需要安装和配置 Gitee 环境,下面是安装和配置 Gitee 环境的步骤。

    下载 Git 安装包:https://git-scm.com/download/linux
    在这里插入图片描述
    下载好后将 Git 安装包上传到 CentOS 机器中。
    在这里插入图片描述
    解压压缩包:

    tar -zxvf git-2.37.2.tar.gz
    
    • 1

    安装相关依赖:

    dnf install -y gcc automake autoconf libtool make curl-devel expat-devel gettext-devel openssl-devel zlib-devel
    
    • 1

    编译并安装 Git 到 /usr/local/git 目录中:

    cd git-2.37.2
    make prefix=/usr/local/git all install
    
    • 1
    • 2

    配置 Git 的环境:

    vim /etc/profile
    
    • 1

    在尾部添加下面内容:( GIT_HOME 是解压后的 Maven 路径)

    export GIT_HOME=/usr/local/git
    export PATH=$GIT_HOME/bin:$PATH
    
    • 1
    • 2

    在这里插入图片描述
    加载配置文件:

    source /etc/profile
    
    • 1

    检查 Git:

    git --version
    
    • 1

    在这里插入图片描述
    到这里 Git 就已经完成安装了,但是现在 Git 在拉取代码或上传代码时每次都要输入账户和密码,下面的步骤是让 Git 保存账户和密码。

    cd ~
    git config --global credential.helper store
    vim .gitconfig
    
    • 1
    • 2
    • 3

    将内容修改成以下:(将 name 和 email 修改成你的, 一定要注意格式,name 和 email 前面是一个 tab,不是空格)

    [user]
            name = jiale
            email = 1727937426@qq.com
    [credential]
            helper = store
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    然后随便克隆一个该账号下的私有的仓库:

    git clone https://xxx/xxx/xxx.git
    
    • 1

    然后输入账号和密码,此时就会保存账号密码,之后拉取代码或上传代码时就不需要输入账号密码了。
    在这里插入图片描述

    运行 Jenkins 项目

    要在 CentOS 机器中安装 Jenkins 有两种方式:1.使用安装包的方式安装;2.使用 war 包通过 java 直接运行。
    既然我们已经在机器中安装了 JDK,那么就直接采用启动 war 包的形式启动 Jenkins。

    下载 Jenkins WAR 包:https://www.jenkins.io/download/
    在这里插入图片描述
    将下载的 Jenkins war 包上传到 CentOS 机器中。
    在这里插入图片描述
    后台启动 Jenkins:

    # 启动的默认端口号为 80080
    nohup java -jar jenkins.war > jeckins.log 2>&1 &
    # 如果需要指定端口号使用 --httpPort 参数启动
    nohup java -jar jenkins.war --httpPort=8081 > jeckins.log 2>&1 &
    
    • 1
    • 2
    • 3
    • 4

    命令说明

    1. nohup:表示进程在当用户注销或者网络断开时不会被终止。
    2. java -jar jenkins.war:Java 启动 war 包命令。
    3. jeckins.log:表示日志输出到的位置。
    4. 2>&1:表示不仅命令行正常的输出保存到日志文件中,产生错误信息的输出也保存到日志文件中。

    启动之后会自动生成日志文件:
    在这里插入图片描述
    这个文件保存了 Jenkins 的初始密码,查看这个文件:

    car jeckins.log
    
    • 1

    找到默认的密码:
    在这里插入图片描述
    访问机器的 8080 端口,如果启动时指定了端口号,就访问指定的端口号。
    如果无法访问请检查端口号的安全组或防火墙是否开启。

    输出 Jenkins 的默认密码,点击继续:
    在这里插入图片描述
    选择【安装推荐的插件】,等待安装完成
    在这里插入图片描述
    在这里插入图片描述
    进入用户创建页面,自己填写。
    在这里插入图片描述
    实例配置默认即可,点击【保存并完成】。
    在这里插入图片描述
    点击【开始使用 Jenkins】。
    在这里插入图片描述
    此时就已经完成了 Jenkins 的安装。
    在这里插入图片描述

    Jenkins 全局指定环境

    在上面我们安装了 JDK、Maven、Git,这时我们需要告诉 Jenkins 这些环境安装在哪儿。

    依次点击【Manage Jenkins】- 【Global Tool Configuration】
    在这里插入图片描述
    设置 Maven 的 settings.xml 文件的路径:
    在这里插入图片描述
    设置 JDK 安装路径:
    在这里插入图片描述
    设置 git 文件的路径:
    在这里插入图片描述
    【注意】上面的 /usr/local/git/bin/git 是 git 文件的路径,不是 git 的安装路径,如果使用 yum 或 dnf 安装的 git 会在 /usr/bin/git 路径下。
    在这里插入图片描述
    设置 Maven 的安装路径:
    在这里插入图片描述

    然后点击保存:
    在这里插入图片描述

    Jenkins 部署 Gitee 上的 SpringBoot 项目

    Jenkins 在构建 maven 项目时,需要先安装 【Maven Integration】插件。

    依次点击【Manage Jenkins】- 【Manage Plugins】
    在这里插入图片描述
    依次操作【可选插件】-【输入框输入 Maven Integration】 -【勾选】-【Install without restart】
    在这里插入图片描述
    勾选【安装完成后重启Jenkins(空闲时)】
    在这里插入图片描述
    插件安装好后会自动重启 Jenkins 服务,然后刷新页面重新登录 Jenkins。

    然后点击【新建任务】在这里插入图片描述
    输入任务名称 - 选择【构建一个 maven 项目】- 【确定】
    需要注意的是:只有在 Jenkins 中安装了 Maven Integration 插件,才会有【构建一个 maven 项目】的选项。
    在这里插入图片描述
    填写【General】信息:
    在这里插入图片描述
    在【源码管理】中,选择 Git,在 【Repository URL】 输入远程仓库地址,我在 Gitee 中提前创建了 file-depot 项目,并且项目是私有的。
    在这里插入图片描述
    输入仓库地址和所使用的分支。
    在这里插入图片描述
    注意:如果在安装 git 的时候,设置了保存用户名和密码,那么就不需要配置 【Credentials】 下的登录凭证信息,如果没有保存用户名和密码,就需要设置【Credentials】下的信息,下面是配置【Credentials】的步骤,已经保存账户名和密码可以忽略下面步骤

    依次点击【Credentials】- 【添加】
    在这里插入图片描述
    输入账号和密码信息,然后点击添加。
    在这里插入图片描述
    在【Credentials】中选择我们刚刚添加的账号。
    在这里插入图片描述
    然后点击保存。
    在这里插入图片描述
    回到首页,点击【Dashboard】
    在这里插入图片描述
    点击【构建】按钮。
    在这里插入图片描述
    等待构建,出现以下的信息表示已经构建成功。(第一次构建时没有绿色的√,上图我在事先已经构建过一次,所以才会有绿色的√)
    在这里插入图片描述
    题外话:比较重要,要理解 jenkins 的工作目录
    jenkins 构建其实就相当于在执行 maven 的打包命令,构建完毕之后会生成一个 target 目录和 jar/war 包。

    构建的目录在 cd ~/.jenkins/workspace/任务名称 下。

    我们看一下家目录:cd ~ 里面存在一个 .jenkins,这个目录就是 jenkins 运行时自动生成的内容。
    在这里插入图片描述
    进入 .jenkins 目录下,我们在首页创建的所有的任务都保存在 workspace 目录下:
    在这里插入图片描述
    进入 workspace 目录下,文件夹名字和我们创建任务的名称一致:
    在这里插入图片描述
    进入任务文件夹,可以看到我们的源代码,以及构建之后生成的 target 目录。
    在这里插入图片描述
    进入 target 目录,可以看到打包生成的 jar/war 包。
    在这里插入图片描述
    要启动 jar/war 包,可以使用 java -jar 包名称 命令执行。在 Jenkins 中执行构建之后,可以指定需要执行的 shell 命令或脚本,我们只需要设置好脚本,在每次执行构建结束后,就自动部署执行项目。

    题外话结束

    要实现 jenkins 在构建完毕后自动执行某些脚本,那就需要再安装一个插件【Post build task】

    回到首页,点击 【Manage Jenkins(系统管理)】-【Manage Plugins(插件管理)】-【可选插件】-输入框中输入【Post build task】
    在这里插入图片描述
    安装 【Post build task】插件,并重启 jenkins。
    在这里插入图片描述
    刷新页面,重新登录 jenkins,回到首页,点击项目名称:
    在这里插入图片描述
    点击配置:
    在这里插入图片描述
    依次点击【构建后操作】-【增加构建后操作步骤】-【post build task】
    在这里插入图片描述
    在【Log text】下填写内容 test (固定)。
    在 【Script】填写以下脚本:

    #!/bin/bash
    # 这里可替换为你的 war 或 jar 包路径
    APP_NAME=target/file-depot-0.0.1-SNAPSHOT.jar
    
    # 检查程序是否在运行
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
    date > /root/start.log
    if [ -z "${pid}" ]; then
        # 如果程序不存在直接启动程序,根据个人需求是否需要指定端口号
        nohup java -jar $APP_NAME >> /root/start.log 2>&1 &
    else
        # 如果已经执行,将程序停止
        echo '程序目前启动中,正在关闭程序...' >> /root/start.log
        kill -9 $pid
        echo '已关闭运行中的程序~' >> /root/start.log
        # 停止之后启动程序,根据个人需求是否需要指定端口号
        nohup java -jar $APP_NAME >> /root/start.log 2>&1 &
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    脚本需要注意的地方

    1. jenkins 【post build task】下的脚本,当前操作的目录在:~/.jenkins/workspace/任务名称 下。
    2. java -jar $APP_NAME 可以加属性参数,如端口号、应用名称、环境选择等。
    3. 上述的脚本,当程序以及运行时,会自动把已启动的程序停止,然后重新运行程序(也是程序重新发布的操作)。
    4. /root/start.log 为输出日志,可自己定义输出文件的位置。

    然后点击保存。
    在这里插入图片描述
    看下我们现在所占用的端口号:netstat -lnpt
    我的 jar 包指定的是 80 端口,目前 80 端口没被使用。
    在这里插入图片描述
    回到首页,再次点击构建,等待构建成功。
    在这里插入图片描述
    再次查看所占用的端口号:netstat -lnpt
    可以发现 80 端口以及被使用了,证明我们的程序也以及启动起来了。
    在这里插入图片描述
    访问机器的 80 端口,可以看到我们的项目以及能正常访问了。
    在这里插入图片描述
    之后我们每次修改了代码,只需要将代码上传到 gitee 中,然后在 jenkins 中点击构建,即可实现重新发布项目。

    到此位置 Jenkins 发布 Gitee 上的 SpringBoot 项目全过程就已经结束了~

    如果有哪里不明白或者出现步骤不一样的情况,欢迎留言~~

  • 相关阅读:
    【WPF系列】- System.Diagnostics命名空间
    英文科技论文写作与发表-格式和规范(第5章)
    做了个 chrome 插件实现 B 站视频截图功能,直接从当前视频帧无损复制
    分享一个项目模板electron+vue+ts+vite
    堆排序+TOPK问题
    Java8:Effectively final
    MySQL必知必会_第十九~二十三章
    【CNN】白话迁移学习中域适应
    PyCharm创建一个简单的Django项目
    世强硬创获昕感科技授权代理,SiC MOSFET实现超低导通电阻
  • 原文地址:https://blog.csdn.net/weixin_44496396/article/details/126554111