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



    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如果存在多个jdk版本可以按照下面方式切换。

    sudo update-alternatives --config java
    sudo update-alternatives --config javac
    
    • 1
    • 2

    安装Maven

    sudo apt install maven
    mvn -v
    whereis maven
    
    • 1
    • 2
    • 3

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

    配置中央仓库

    修改maven的setting指向阿里云

    vim /usr/share/maven/conf/settings.xml
    
    • 1

    mirrors下添加mirror

        <mirror>
          <id>alimavenid>
          <name>aliyun mavenname>
          <url>https://maven.aliyun.com/repository/publicurl>
          <mirrorOf>*mirrorOf>        
        mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    安装Git

    sudo apt-get install git
    which git
    whereis git
    
    • 1
    • 2
    • 3

    NodeJS安装(可选)

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

    sudo apt-get install -y nodejs
    npm config set registry https://registry.npm.taobao.org
    whereis node
    node -v
    npm -v
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装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
    
    • 1
    • 2
    • 3

    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;
    }
    
    • 1
    • 2
    • 3

    启动命令为

    java -jar jenkins.war --httpPort=8999 --prefix=/jenkins
    
    • 1

    浏览器访问地址为:

    https://www.example.com/jenkins

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

    cat /root/.jenkins/secrets/initialAdminPassword
    # 获取到密钥直接填写到上面然后继续
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    设置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 #前端部署才需要
    
    • 1
    • 2
    • 3
    • 4

    全局工具配置

    系统管理-全局工具配置

    • 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 &
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    点击保存按钮。

    9.测试

    在Gitee的上点击测试。

    我发现这个测试并不能触发jenkins的构建,但是我提交了代码是可以触发的。
    然后去jenkins上观察是否触发最新的构建以及构建日志。

  • 相关阅读:
    R语言编写自定义函数对数据进行标准化、使用keras包构建深度学习自动编码器(autoencoder)、使用MSE指标评估自动编码器的效能(重构误差)
    JavaScript-BOM中window对象的常见事件
    微机保护装置智能操控及无线测温等产品在某助剂厂新建项目的应用
    MCU芯片测试:性能指标测试痛点是什么?ATECLOUD能否解决?
    em,rem,px,rpx的区别与使用
    呆头鹅-全自动视频混剪,批量剪辑批量剪视频,探店带货系统,精细化顺序混剪,故事影视解说,视频处理大全,精细化顺序混剪,多场景裂变,多视频混剪
    m基于matlab的BTS天线设计,带GUI界面
    ChinaSoft 论坛巡礼 | 新兴系统软件论坛
    Linux简单安装ffmpeg 实现用PHP压缩音频
    Java8 Stream流常用api总结 --工作起来真的很方便
  • 原文地址:https://blog.csdn.net/abu935009066/article/details/136308369