1. 前言
随着互联网的飞速发展,业务需求也慢慢增多,项目功能也进入快速迭代的时代,使用人工方式部署项目比较麻烦从而显得心有余而力不足。因此,互联网上就有了自动持续集成的概念,它主要的工作是快速对项目进行构建、自动化测试和发布。
2. 什么是Jenkins
Jenkins是一款开源 CI&CD 软件,基于 Java 开发的一种持续集成工具,用于自动化各种任务,包括构建、测试和部署软件。
今天这篇文章就来讲讲Jenkins是如何自动构建Spring Boot项目。
3. Jenkins安装
- 环境准备( 需要提前安装好以下这几个工具)
- JDK
- Git
- Maven
- Jenkins安装和启动
官方文档介绍非常详细 https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/
4. Jenkin配置
- 进入Jenkin控制台
- Jenkin启动成功后,访问 http://ip:8080,若出现以下界面则表示启动成功
- 启动成功后需要输入密码才能下一步
- 上图已经显示管理员密码所在的文件路径,在该文件即可找到管理员密码,输入完密码,点击继续
- 选择安装推荐的插件,然后等待Jenkins自行安装
-
全部安装完成,点击继续。
-
创建管理员
- 按照要求填写管理员的信息,点击下一步
- 实例配置,这里Jenkins默认会填上,直接点击下一步
- 配置成功后Jenkins会自动跳转到如下界面
- Jenkins配置JDK、maven、Git环境【系统管理->全局工具配置】
- 根据自己服务器上实际的安装路径进行配置,如下图所示
-
配置完成后,点击保存。
-
安装插件
需要安装下面这两个插件,安装步骤:【系统管理】-> 【插件管理】-> 【可选插件】,勾选 Maven Integration , 安装- Maven Integration:Jenkins和Maven之间的深度集成,增加对项目自动触发的支持。
- Publish Over SSH:用于连接部署SpringBoot项目的服务器,如果jenkins和SpringBoot项目部署在同一台服务器则可以不用安装,反之则需要安装,而且还需要配置SSH Server
-
配置SSH Server
jenkins和SpringBoot项目部署在同一台服务器则可以不用配置
SSH Server 是用来连接部署服务器的,在项目构建完毕后将jar包推送到服务器中并执行相应的脚本。- 配置步骤:【系统管理】-> 【系统设置】,找到 Publish Over SSH,点击新增
-
新建maven
新建步骤:【新建任务】->【填写任务名称】->【构建maven项目】,如下图
-
源码管理,添加Git仓库并填写凭证
-
Post Steps
- jenkins和SpringBoot项目部署同一台服务器时,选择执行shell
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 "启动成功"
- jenkins和SpringBoot项目部署不在同一台服务器时,选择Send files or execute commands over SSH
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的主界面,列表上点击需要构建的项目名称,点击立即构建即可开始构建任务,控制台可以看到日志输出,如果构建失败,需要追溯失败的原因。
- 构建任务