• 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • 使用Jenkins自动化部署SpringBoot项目

      一.  前言

      《Jenkins的简介、安装、配置》一文中,我们简单介绍了Jenkins的作用和功能,并在服务器中安装部署了Jenkins,接下来,我们将通过一个实战项目,用Jenkins自动化部署一个SpringBoot项目,流程如下:

      通过IDEA提交到本地Git仓库并Push到GitHub或者Gitee后,Jenkins将会自动帮我们结束之前的项目进程,并自动从GitHub或者Gitee中拉取最新的项目部署到指定服务器上。

      也就是说,之前需要我们手动用Maven打包、上传到服务器、杀掉之前的进程、启动现在的项目等这一系列操作全部交由Jenkins自动完成,我们需要做的就是将要部署的代码提交到GitHub或者Gitee,只要提交成功,Jenkins就会帮我们自动部署。

      二.  全局工具配置

      1. 我们点击左侧菜单中的的系统管理 —> 全局配置

      使用Jenkins自动化部署SpringBoot项目

      2. 由于JDK我们已经提前安装了,所以这里取消自动安装,直接输入jdk的路径,

      使用Jenkins自动化部署SpringBoot项目

      3. 同理,我们也可以先安装好Git后,再直接输入git的安装路径(如果忘记了git的安装路径,可以用which git 命令查询),如下图:

      使用Jenkins自动化部署SpringBoot项目

      4. 除此之外,如果我们还没有安装相关软件,也可以选择让Jenkins自动安装,以Maven为例,如下图

      使用Jenkins自动化部署SpringBoot项目

      5. 当然,如果在这之前,你的服务器已经安装了Maven和Git,也可以直接取消自动安装,输入安装路径即可,除此之外,我们还需要安装Maven插件,点击左侧菜单栏中的系统管理-> 插件管理,选择可选插件,搜索maven,选择 Maven Integration plugin,点击直接安装即可。

      使用Jenkins自动化部署SpringBoot项目

      6. 用同样的方法分别安装GitHub Authentication、Git plugin、Gitee插件(可以自由选择安装,安装后配置Gitee更方便),由于在国内还是Gitee更稳定一些,所以接下来的讲解会以Gitee为例。

      7. 打开左侧菜单中的系统管理 -> 系统设置 ,找到Gitee一栏,输入以下信息:

      链接名:Gitee

      Gitee 域名 URL:https://gitee.com

      Gitee 域名完整URL地址:类型选择Gitee API 令牌,在登录码云情况下,在该浏览器上打开https://gitee.com/profile/personal_access_tokens,新增令牌[1]

      使用Jenkins自动化部署SpringBoot项目

      三.  新建任务

      1. 点击左侧的新建任务按钮,输入任务名称,点击确定

      使用Jenkins自动化部署SpringBoot项目

      2. 输入该任务的简介,也可以直接空着进行下一步,在Gitee链接一栏,会自动选择我们上面配置的Gitee

      使用Jenkins自动化部署SpringBoot项目

      3. 设置Repository URL 和Credentials,

      Repository URL就是我们的git仓库的地址

      使用Jenkins自动化部署SpringBoot项目

      4. 输入地址后可以看到有错误提示无法连接仓库,需要我们在Credentials中添加我们的Gitee账号和密码,点击上图中的添加 -> Jenkins ,在弹出的窗口中输入我们的账号和密码,ID是我们的唯一标识。

      使用Jenkins自动化部署SpringBoot项目

      5. 如果你的账号、密码、仓库地址均正确,则错误提示消失:

      使用Jenkins自动化部署SpringBoot项目

      6. 在配置构建器一栏中,我们勾选 “Build whenever a SNAPSHOT dependency is built” 和 “Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://XXXXX ” 两个选项。(注意,这个URL的内容等会我们需要用到)

       使用Jenkins自动化部署SpringBoot项目

      7.  还是在配置构建起这一栏中,我们点击生成按钮,会自动生成一串密码,我们将生成的密码和上一步勾选的URL的http://XXXXX 这两个内容,复制到我们的项目的WebHook中,并点击添加。WWebHook在我们每次 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 ,我们可以通过这个请求告诉Jenkins代码需要部署了。

      使用Jenkins自动化部署SpringBoot项目

      添加后,可以点击测试按钮可以进行测试,点击查看更多按钮可以查看结果

      使用Jenkins自动化部署SpringBoot项目

      如果状态码是200,则说明添加成功

      使用Jenkins自动化部署SpringBoot项目

      8. 在Build一栏中输入以下内容:

      Root POM:pom.xml

      Goals and options:clean install -DskipTests  

      其中-DskipTests  代表忽略Test构建

      9. 在Post Steps一栏中,选择执行Xshell,并输入以下内容[2]:

      #!/bin/bash
      #export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
      export BUILD_ID=dontKillMe
      # 防止rm 时候参数变量为空
      cd /tmp/
      #最终打包安装的jar包库路径,包括了依赖其他快照jar包(依赖的jar应该不需要删除)
      #mvn_jar_path=/mvn/libspace/com/middol/
      #指定最后编译好的jar存放的位置,需要换成你自己的地址
      www_path=/www/wwwroot/jenkins
      #Jenkins中编译好的jar位置,需要换成你自己的地址
      jar_path=/root/.jenkins/workspace/ProjectName/target
      #先进入target目录
      cd /root/.jenkins/workspace/Test/target
      #获取Jenkins中编译好的jar名称,其中XXX为你的pom文件中的artifactId的值,这一步主要是为了根据项目版本号动态获取项目文件名
      jar_name=`ls |grep XXX-|grep -v original`
      #获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程,需要换成你自己的地址,并建好run.pid文件
      #注意,如果你的服务器有多个项目,要保证每个项目的run.pid文件地址不一样,否则会杀掉其他项目的进程
      pid=$(cat /root/.jenkins/workspace/ProjectName/run.pid)
      #杀掉以前可能启动的项目进程
      kill -9 ${pid}
      #先进入mvn打包安装的路径删除依赖包
      cd ${mvn_jar_path}
      #先删除原来的jar文件,主要目的是删除依赖的快照包(依赖的jar应该不需要删除)
      #rm -rf  /mvn/libspace/com/middol/*
      #进入最后指定存放jar的位置
      cd  ${www_path}
      #先删除原来的jar文件
      rm -rf ./${jar_name}
      #进入指定的编译好的jar的位置
      cd  ${jar_path}
      #将编译好的jar复制到最后指定的位置
      cp  ${jar_path}/${jar_name} ${www_path}
      #进入最后指定存放jar的位置
      cd  ${www_path}
      #启动jar,指定SpringBoot的profiles为dev,后台启动
      nohup java -jar ${jar_name} >/dev/null 2>&1 &
      echo haha
      #将进程ID存入到run.pid文件中,需要换成你自己的地址
      echo $! > /root/.jenkins/workspace/ProjectName/run.pid

      10. 点击保存并应用,系统会自动回到项目空间主页面,我们点击立即构建,即可构建成功,项目也会自动启动并执行

      使用Jenkins自动化部署SpringBoot项目

      三. 配置SSH

      由于我直接将Jenkins部署到了Test这个项目所在的服务器中,所以在之前的步骤中,没有配置SSH,但假如Jenkins安装到了本地,或者Jenkins和Test不在同一个服务器中,则我们需要配置SSH,将打包的文件通过ssh上传

      1. 安装Publish Over SSH插件,安装方法和前面类似,这里不再赘述

      2. 点击左侧菜单系统管理 -> 系统配置 ->  Publish over SSH,由于之前已经将SSH密码登录禁用,并修改成用证书登录,(修改教程请查看本站《如何将服务器SSH验证方式修改为数字证书登录》一文),所以这里配置ssh的时候,也需要通过证书的方式连接。需要注意的是,之前我们的服务器中只存放了私钥文件,而公钥是在本地的,我们将私钥复制一份,并将本地的公钥内容复制出来,添加在私钥的内容后面。接下来在Passphrase中输入公钥的访问密码,Path to key中输入刚刚新建的密钥地址,然后点击新增按钮,输入ip地址、用户名和name相关信息

      使用Jenkins自动化部署SpringBoot项目

      3. 配置好ssh后,点击左侧菜单中我的视图 ,点击项目名称,选择配置

      使用Jenkins自动化部署SpringBoot项目

      4. 点击构建后的操作模块,选择Send build artifacts over SSH,并进行配置。

      Name:选择我们上面配置的SSH,

      Source files : 项目打包后的jar地址

      Remove prefix将Source files的值去掉.jar的值

      Remote directory:jar包在构建后的地址

      Exec command:构建后要执行的脚本地址

      5. 接下来点击应用,重新构建就可以了。

      四. 其他相关

      我们还可以给Jenkins添加邮件配置,用于每次构建后,通知我们构建结果,这里不再赘述,可以查看以下教程:

      https://www.cnblogs.com/imyalost/p/8781759.html

      参考资料

      [1] Jenkins + Gitee(码云) 实现代码自动化构建

      [2]:Jenkins 部署SpringBoot项目的简单shell脚本 

    • 0
    • 0
    • 0
    • 132
    • 请登录之后再进行评论

      登录
    • 单栏布局 侧栏位置: