• Linux下Jenkins自动化部署SpringBoot应用


    Linux下Jenkins自动化部署SpringBoot应用

    1、 Jenkins介绍

    官方网址:https://www.jenkins.io/

    2、安装Jenkins

    2.1 centos下命令行安装

    访问官方,点击文档:

    在这里插入图片描述

    点击 Installing Jenkins:

    在这里插入图片描述

    点击 Linux:

    在这里插入图片描述

    在这里插入图片描述

    选择 Red Hat/Alma/Rocky,就可以看到相关的安装命令:

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
    sudo yum upgrade
    # 安装安装包
    sudo yum install fontconfig java-17-openjdk
    sudo yum install jenkins
    # 启动
    sudo systemctl daemon-reload
    sudo systemctl enable jenkins
    sudo systemctl start jenkins
    sudo systemctl status jenkins
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其它版本的安装请参考:https://pkg.jenkins.io/redhat-stable/

    # 本文安装
    # 下载镜像
    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    
    # 安装
    rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    
    # 更新
    yum upgrade
    
    # 安装 Java 环境
    yum install java-11-openjdk
    
    # 安装 Jenkins
    yum install jenkins
    
    # 启动
    systemctl daemon-reload
    systemctl enable jenkins
    systemctl start jenkins
    systemctl status jenkins
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.2 错误处理

    2.2.1 错误1

    如果报错:

    $ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    --2022-11-15 09:38:52-- https://pkg.jenkins.io/redhat-stable/jenkins.repo
    Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133,
    151.101.130.133, ...
    Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected.
    ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's
    Encrypt/CN=R3’:
    Issued certificate has expired.
    To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    请使用下面的命令:

    wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    # 或者
    yum install -y ca-certificates
    
    • 1
    • 2
    • 3
    2.2.2 错误2

    如果报错:

    $ yum install jenkins
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.bupt.edu.cn
     * extras: mirrors.bfsu.edu.cn
     * updates: mirrors.bfsu.edu.cn
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 jenkins.noarch.0.2.414.3-1.1 将被 安装
    --> 解决依赖关系完成
    
    依赖关系解决
    
    =====================================================================================================================
     Package                   架构                     版本                             源                         大小
    =====================================================================================================================
    正在安装:
     jenkins                   noarch                   2.414.3-1.1                      jenkins                    85 M
    
    事务概要
    =====================================================================================================================
    安装  1 软件包
    
    总计:85 M
    安装大小:85 M
    Is this ok [y/d/N]: y
    Downloading packages:
    警告:/var/cache/yum/x86_64/7/jenkins/packages/jenkins-2.414.3-1.1.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID ef5975ca: NOKEY
    
    
    jenkins-2.414.3-1.1.noarch.rpm 的公钥尚未安装
    
    • 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

    请使用下面的命令:

    $ yum install jenkins --nogpgcheck 
    
    • 1

    2.3 启动状态

    # 查看启动状态
    # systemctl status jenkins
    ● jenkins.service - Jenkins Continuous Integration Server
       Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
       Active: active (running) since 六 2023-10-21 13:16:13 CST; 10s ago
     Main PID: 5851 (java)
        Tasks: 53
       Memory: 1.1G
       CGroup: /system.slice/jenkins.service
               └─5851 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war...
    
    1021 13:15:49 opengauss jenkins[5851]: c251022ca0c2478794f84f67117810d9
    1021 13:15:49 opengauss jenkins[5851]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
    1021 13:15:49 opengauss jenkins[5851]: *************************************************************
    1021 13:15:49 opengauss jenkins[5851]: *************************************************************
    1021 13:15:49 opengauss jenkins[5851]: *************************************************************
    1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.192+0000 [id=30]        INFO        jenkins.In...ation
    1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.203+0000 [id=23]        INFO        hudson.lif...nning
    1021 13:16:13 opengauss systemd[1]: Started Jenkins Continuous Integration Server.
    1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        h.m.Downlo...aller
    1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        hudson.uti...pt #1
    Hint: Some lines were ellipsized, use -l to show in full.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、访问Jenkins

    访问地址:http://192.168.143.175:8080

    在这里插入图片描述

    查看密码并且输入密码:

    $ cat /var/lib/jenkins/secrets/initialAdminPassword
    c251022ca0c2478794f84f67117810d9
    
    • 1
    • 2

    在这里插入图片描述

    选择安装推荐的插件,Jenkins 便会开始自动下载安装:

    在这里插入图片描述

    下载完之后会自动跳转到下一个页面:

    在这里插入图片描述

    填写信息点击保存并完成:

    在这里插入图片描述

    会跳转到另一个页面:

    在这里插入图片描述

    点击保存并完成:

    在这里插入图片描述

    点击开始使用 Jenkins:

    在这里插入图片描述

    4、插件的安装

    使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。

    点击 “Manage Jenkins” --> “插件管理”:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里可以看到我们需要的插件,按需下载即可。

    5、卸载Jenkins

    # 在卸载Jenkins之前,首先停止Jenkins服务
    $ systemctl stop jenkins
    
    # 禁止其在系统启动时自动运行
    $ systemctl disable jenkins
    
    # 卸载Jenkins软件包
    $ yum clean all
    $ yum remove jenkins
    
    # 删除Jenkins相关目录和文件
    $ rm -r /var/lib/jenkins
    $ rm -rf /etc/default/jenkins
    $ rm -rf /var/cache/jenkins
    $ rm -rf /var/run/jenkins
    
    # 删除Jenkins配置文件和日志目录
    $ rm -r /etc/sysconfig/jenkins
    $ rm -r /var/log/jenkins
    
    # 删除Jenkins用户和用户组
    $ userdel jenkins
    $ groupdel jenkins
    
    # 删除Jenkins的YUM源文件
    $ rm /etc/yum.repos.d/jenkins.repo
    
    # 删除Jenkins的系统服务配置文件
    $ rm /usr/lib/systemd/system/jenkins.service
    $ rm /etc/systemd/system/jenkins.service
    
    # 删掉相关安装目录
    $ rm -rf /root/.jenkins/
    
    # 删掉war包
    $ rm -rf /webapps/jenkinsapp/
    
    # 删掉剩余相关
    $ rm -rf /usr/lib/firewalld/services/jenkins.xml
    $ rm -rf /var/cache/yum/x86_64/7/jenkins
    $ rm -f /var/lib/yum/repos/x86_64/7/jenkins
    
    # 彻底删除残留文件
    $ find / -iname jenkins | xargs -n 1000 rm -rf
    
    • 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

    6、Jenkins全局配置

    需要配置的有 jdk、git、maven 工具。

    6.1 JDK安装

    # 下载地址
    # http://www.oracle.com/technetwork/java/javase/downloads/index.html
    # 使用的版本
    # jdk-8u212-linux-x64.tar.gz
    
    # 1、解压
    $ tar -zxvf jdk-8u212-linux-x64.tar.gz
    
    # 2、重命名
    $ mv jdk1.8.0_212 jdk1.8
    
    # 3、添加环境变量
    $ vim /etc/profile
    export JAVA_HOME=/home/zhangshixing/java/jdk1.8
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=.:${JAVA_HOME}/bin:$PATH
    
    # 4、生效
    $ source /etc/profile 
    
    # 5、查看版本
    $ java -version
    java version "1.8.0_212"
    Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
    
    # 6、查看路径
    $ which java
    /home/zhangshixing/java/jdk1.8/bin/java
    
    • 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

    6.2 git安装

    # 使用yum安装
    $ yum -y install git
    $ git --version
    
    • 1
    • 2
    • 3
    # 使用安装包安装:
    # 1、下载安装包
    # https://mirrors.edge.kernel.org/pub/software/scm/git/
    wget -O git-2.22.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.20.0.tar.gz
    
    # 2、解压安装包
    $ tar -zxvf git-2.22.0.tar.gz
    
    # 3、进入解压后的文件夹
    $ cd git-2.22.0
    
    # 4、安装需要的依赖
    $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
    
    # 5、在安装编译源码所需依赖的时候,yum会自动帮你安装git,这时候你需要先卸载这个旧版的git
    $ yum -y remove git
    
    # 6、编译git源码
    $ make prefix=/usr/local/git all
    
    # 7、安装git至/usr/local/git路径
    $ make prefix=/usr/local/git install
    
    # 8、配置环境变量
    $ vim /etc/profile 
    $ export PATH=$PATH:/usr/local/git/bin
    
    # 9、使配置文件生效
    $ source /etc/profile
    
    # 10、查看git是版本
    $ git --version
    git version 2.22.0
    
    # 11、查看路径
    $ which git
    /usr/local/git/bin/git
    
    • 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

    6.3 Maven安装

    # 下载地址
    # https://dlcdn.apache.org/maven/maven-3
    # 使用的版本
    # apache-maven-3.3.9-bin.tar.gz
    
    # 1、解压
    $ tar -zxvf apache-maven-3.3.9-bin.tar.gz
    
    # 2、创建maven资源库目录
    $ mkdir -p /home/zhangshixing/maven/m2/repository
    
    # 3、编辑settings.xml文件
    $ cd /home/zhangshixing/maven/apache-maven-3.3.9/conf
    $ vim settings.xml
    # 将原文件内容全部删除,添加新的配置内容
    $ :1,.d
    
    # 4、新的配置内容
    <?xml version="1.0" encoding="UTF-8"?>
    <settings
        xmlns="http://maven.apache.org/SETTINGS/1.2.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
        <localRepository>/home/zhangshixing/maven/m2/repository</localRepository>
        <pluginGroups></pluginGroups>
        <proxies></proxies>
        <servers></servers>
        <mirrors>
            <mirror>
                <id>alimaven</id>
                <name>aliyun maven</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                <mirrorOf>central</mirrorOf>
            </mirror>
        </mirrors>
        <profiles></profiles>
    </settings>
    
    # 5、添加环境变量
    $ vim /etc/profile
    MAVEN_HOME=/home/zhangshixing/maven/apache-maven-3.3.9
    PATH=$MAVEN_HOME/bin:$PATH
    export MAVEN_HOME PATH
    
    # 6、重新加载配置文件
    $ source /etc/profile
    
    # 7、查看版本
    $ mvn -version
    Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
    Maven home: /home/zhangshixing/maven/apache-maven-3.3.9
    Java version: 1.8.0_212, vendor: Oracle Corporation
    Java home: /home/zhangshixing/java/jdk1.8/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
    
    # 8、查看路径
    $ which mvn
    /home/zhangshixing/maven/apache-maven-3.3.9/bin/mvn
    
    • 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
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    6.4 进行配置

    点击 “Manage Jenkins” --> “Tools”:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    全部配置完成之后,点击保存、点击应用。

    7、新建git仓库并上传代码

    在这里插入图片描述

    8、任务的创建与执行

    登入 Jenkins,点击 “新建 Item”,输入任务名称并选择构建一个多配置项目;

    在这里插入图片描述

    在这里插入图片描述

    点击确定,之后我们作出如下配置:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    点击保存:

    在这里插入图片描述

    返回面板,点击按钮执行此任务:

    在这里插入图片描述

    执行结果:

    在这里插入图片描述

    一个简单的自动化部署应用就完成了。

    9、Jenkins通过脚本的方式运行mvn命令不识别的处理方式

    如果我们进行如下的配置:

    在这里插入图片描述

    则会报如下的错误:

    /tmp/jenkins8798212945672749251.sh:行1: mvn: 未找到命令
    
    • 1

    解决方法:把 maven 的 mvn 弄个快捷方式到sbin下就可以解决:

    ln -s $MAVEN_HOME/bin/mvn /usr/sbin/mvn
    
    • 1

    10、配置git凭据

    修改 Git 配置:

    在这里插入图片描述

    点击添加:

    在这里插入图片描述

    输入相关信息并且点击添加:

    在这里插入图片描述

    重新选择:

    在这里插入图片描述

    保存然后重新运行。

    11、配置应用服务器信息

    应用服务器,就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)。

    首先安装 Publish Over SSH 插件:

    在这里插入图片描述

    然后进行配置:

    在这里插入图片描述Publish Over SSH各个参数介绍

    • Passphrase:使用用户名、密码 SSH 登录时,这里输入用户名密码。使用私钥登录时,这里是私钥的密

      码。

    • Path to key:要使用的 SSH 私钥在Jenkins主机上的路径。路径可以是绝对路径,也可以是相对于

      JENKINS_HOME目录的路径。

    • Key:私钥

    • Disable exec:移除该插件执行命令的能力。如果选中该选项,则 SSH Servers 的高级部分中的

      Disable exec 选项将被忽略。

    • Name:名称。

    • Hostname:服务器 IP。

    • Username:登录服务器用户名。

    • Remote Directory:登录服务器后的根目录,后面 Jenkins默认发送制品到此目录下。

    用户名密码方式:

    在这里插入图片描述

    在这里插入图片描述

    密钥方式:

    # 在目标服务器上执行,也就是需要上传目录的服务器
    # 生成rsa密钥,回车
    $ ssh-keygen -t rsa
    
    # 把公钥内容追加到认证文件中
    $ cat id_rsa.pub >> authorized_keys
    
    # 授权
    chmod 700 /root/.ssh
    chmod 700 /root/.ssh/id_rsa
    chmod 700 /root/.ssh/id_rsa.pub
    chmod 600 authorized_keys
    
    $ vim /etc/ssh/sshd_config
    PemitRootLogin yes
    
    # 重启
    $ service sshd restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    在这里插入图片描述

    点击保存。

    在项目中进行配置打包好的文件进行上传:

    在这里插入图片描述

    # 目标服务器上执行
    $ pwd
    /opt/data
    
    $ ls
    jenkins_demo-0.0.1-SNAPSHOT.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    我们可以在上传完安装包之后执行一个部署脚本:

    # /opt/data/deploy.sh
    
    #!/bin/bash
    
    export JAVA_HOME=/home/zhangshixing/java/jdk1.8
    export PATH=$JAVA_HOME/bin:$PATH
    
    JAR_PATH=/opt/data
    JARFILE=jenkins_demo-0.0.1-SNAPSHOT.jar
    
    cd $JAR_PATH
    
    ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
    
    java -jar $JARFILE > out.log &
    
    if [ $? = 0 ];then
            sleep 30
            tail -n 50 out.log
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    修改项目中的执行命令:

    在这里插入图片描述

    重新运行,然后访问,看安装包是否启动:

    $ curl -X GET http://192.168.143.175:9999/hello
    Hello World!
    
    • 1
    • 2
    $ pwd
    /opt/data
    
    $ ls
    deploy.sh  jenkins_demo-0.0.1-SNAPSHOT.jar  out.log
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们可以看到程序正常启动,并且可以正常访问。

    12、自动构建

    好了,现在我们的项目还不是自动构建,也就是当我们向 Gitee 上的代码仓库提交代码之后,并不会触发 Jenkins

    的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。

    为了实现自动触发构建,我们需要修改两个地方。

    12.1 安装Gitee插件

    在这里插入图片描述

    12.2 修改Jenkins

    首先在 Jenkins 的当前项目中,配置一下触发构建的规则:

    在这里插入图片描述

    在这里插入图片描述

    大家注意,在网页上 Jenkins 已经给出了将来要配置的 Webhook 的地址了,大家直接拷贝该地址即可。

    # webhook地址
    http://192.168.143.175:8080/gitee-project/first%20jenkins
    
    # webhook密码
    373930de602b51fad08a301b2aca8ab2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    12.3 配置Webhook

    接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后

    点击添加 WebHook。

    在这里插入图片描述

    我们这里的 192.168.143.175 不是公网IP,所以gitee上配置会有问题,这里只演示配置方式。

    配置之后我们可以点击测试看是否配置成功。

    12.4 修改代码push代码

    push代码之后就会触发Jenkins自动打包部署。

  • 相关阅读:
    【智能优化算法】基于阴阳对优化算法求解单目标优化问题附matlab代码 Yin Yang Pair Optimization
    308场周赛 leetcode xp_xht123
    ProtoPie for Mac(高保真交互原型设计工具)
    CentOS发生ping百度失败以及连接不到网关的问题解决
    缓存更新策略
    数据结构及八种常用数据结构简介
    JavaSE类和对象
    从油猴脚本管理器的角度审视Chrome扩展
    [npm] npx 介绍与使用说明
    破解校园数字安全难点,联想推出智慧教育安全体系
  • 原文地址:https://blog.csdn.net/qq_30614345/article/details/133977042