1. 前言

随着互联网的飞速发展,业务需求也慢慢增多,项目功能也进入快速迭代的时代,使用人工方式部署项目比较麻烦从而显得心有余而力不足。因此,互联网上就有了自动持续集成的概念,它主要的工作是快速对项目进行构建、自动化测试和发布。

2. 什么是Jenkins

Jenkins是一款开源 CI&CD 软件,基于 Java 开发的一种持续集成工具,用于自动化各种任务,包括构建、测试和部署软件。

今天这篇文章就来讲讲Jenkins是如何自动构建Spring Boot项目。


3. Jenkins安装

  • 环境准备( 需要提前安装好以下这几个工具)
  1. JDK
  2. Git
  3. Maven
  • Jenkins安装和启动
    官方文档介绍非常详细 https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

4. Jenkin配置

  • 进入Jenkin控制台
  • Jenkin启动成功后,访问 http://ip:8080,若出现以下界面则表示启动成功

jenkins spring boot 多模块构建 jenkins部署springboot_java

  • 启动成功后需要输入密码才能下一步

jenkins spring boot 多模块构建 jenkins部署springboot_java_02

  • 上图已经显示管理员密码所在的文件路径,在该文件即可找到管理员密码,输入完密码,点击继续

jenkins spring boot 多模块构建 jenkins部署springboot_java_03

  • 选择安装推荐的插件,然后等待Jenkins自行安装

jenkins spring boot 多模块构建 jenkins部署springboot_jenkins_04

  • 全部安装完成,点击继续。
  • 创建管理员
  • 按照要求填写管理员的信息,点击下一步
  • 实例配置,这里Jenkins默认会填上,直接点击下一步
  • 配置成功后Jenkins会自动跳转到如下界面

jenkins spring boot 多模块构建 jenkins部署springboot_spring boot_05

  • Jenkins配置JDK、maven、Git环境【系统管理->全局工具配置】

jenkins spring boot 多模块构建 jenkins部署springboot_spring boot_06

  • 根据自己服务器上实际的安装路径进行配置,如下图所示

jenkins spring boot 多模块构建 jenkins部署springboot_spring boot_07


jenkins spring boot 多模块构建 jenkins部署springboot_服务器_08


jenkins spring boot 多模块构建 jenkins部署springboot_java_09


  • 配置完成后,点击保存。
  • 安装插件
    需要安装下面这两个插件,安装步骤:【系统管理】-> 【插件管理】-> 【可选插件】,勾选 Maven Integration , 安装
  1. Maven Integration:Jenkins和Maven之间的深度集成,增加对项目自动触发的支持。
  2. Publish Over SSH:用于连接部署SpringBoot项目的服务器,如果jenkins和SpringBoot项目部署在同一台服务器则可以不用安装,反之则需要安装,而且还需要配置SSH Server
  • 配置SSH Server
    jenkins和SpringBoot项目部署在同一台服务器则可以不用配置
    SSH Server 是用来连接部署服务器的,在项目构建完毕后将jar包推送到服务器中并执行相应的脚本。
  • 配置步骤:【系统管理】-> 【系统设置】,找到 Publish Over SSH,点击新增

jenkins spring boot 多模块构建 jenkins部署springboot_java_10


  • 新建maven
    新建步骤:【新建任务】->【填写任务名称】->【构建maven项目】,如下图

jenkins spring boot 多模块构建 jenkins部署springboot_运维_11

  • 源码管理,添加Git仓库并填写凭证
  • Post Steps
  • jenkins和SpringBoot项目部署同一台服务器时,选择执行shell

jenkins spring boot 多模块构建 jenkins部署springboot_jenkins_12

start-jenkins.sh脚本【放到与jenkins同一台服务器的/usr/local目录下】

#!/bin/bash
# 找到Springboot项目对应的进程id
pid=`ps -ef | grep test-spring-cloud-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
# 如果该项目已经在服务器上启动则kill掉
echo “旧应用进程id:$pid”
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "授权"
# 让root用户对jar包持有读,写,执行的权限
chmod 777 /root/.jenkins/workspace/test-jenkins/target/test-spring-cloud-0.0.1-SNAPSHOT.jar
echo "执行"
# jenkins默认会将新打包好的jar包放到/root/.jenkins/workspace/目录下,进入到该目录
cd /root/.jenkins/workspace/test-jenkins/target/
# 后台方式启动jar包
nohup java -jar test-spring-cloud-0.0.1-SNAPSHOT.jar &>jenkinslog.log &
echo "启动成功"
  1. jenkins和SpringBoot项目部署不在同一台服务器时,选择Send files or execute commands over SSH

jenkins spring boot 多模块构建 jenkins部署springboot_spring boot_13

deploy.sh脚本

#!/bin/bash
# 找到Springboot项目对应的进程id
pid=`ps -ef | grep test-spring-cloud-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
# 如果该项目已经在服务器上启动则kill掉
echo “旧应用进程id:$pid”
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "授权"
# 让root用户对jar包持有读,写,执行的权限
chmod 777 /usr/local/data/test-spring-cloud-0.0.1-SNAPSHOT.jar
echo "执行"
# jenkins默认会将新打包好的jar包放到/root/.jenkins/workspace/目录下,进入到该目录
cd /usr/local/data/
# 目标服务器后台方式启动jar包
nohup java -jar test-spring-cloud-0.0.1-SNAPSHOT.jar &>jenkinslog.log &
echo "启动成功"

start-jenkins.sh脚本与deploy.sh脚本是非常相似的,只是更换了jar的存储路径和在不同的服务器上执行。

  • 配置完成后,点击保存。
  • 构建任务
    回到Jenkins的主界面,列表上点击需要构建的项目名称,点击立即构建即可开始构建任务,控制台可以看到日志输出,如果构建失败,需要追溯失败的原因。

jenkins spring boot 多模块构建 jenkins部署springboot_服务器_14