概述
本文将介绍使用Jenkins来部署SpringBoot项目的过程,项目保存在Github中,能通过Jenkins实现提交代码后项目自动拉取代码,自动构建,自动部署。
Jenkins的配置
Jenkins的配置文件在 /etc/sysconfig/jenkins
注意下面的配置并非必须,看个人需求。
修改Jenkins的用户为root,这样会拥有更大的访问权限,方便使用
修改了端口,默认的8080端口,容易出现冲突
Jenkins的目录
介绍下Jenkins目录,在构建脚本中用得到
Jenkins的主目录在 /var/lib/jenkins中
主要的几个目录:
- jobs
创建的任务目录 - logs
存放日志 - nodes
部署节点 - plugins
插件目录 - secrets
密钥目录 - workspace
项目构建的工作空间
安装插件
点击Manage Jenkins > Mange Plugins
在可选插件中搜索插件,安装后重新Jenkins就可以了
需要安装Git和Maven Integration plugin插件
Webhook配置
1) 进入到Github的项目仓库中,在settings中的Webhooks添加Webhook
2) 配置如下
Payload URL中前面的IP和端口就是Jenkins的地址
3)添加凭据
在Gibhub的个人配置中,点击开发者配置
添加一个token
勾选下面的权限
把生成的秘钥Copy下来,后面需要
创建部署任务
1) 新建一个Maven项目
2) 添加项目的描述,可以选择丢弃旧的构建,以节约磁盘空间
3) 源码管理里添加Git仓库地址
项目部署时,会从git拉取最新的代码
4) 然后Credentials里面添加凭据,这里是Github的账号、密码
5)构建触发器,第一个是构建快照版本后触发,第二个是提交代码后由Webhook触发
6)构建环境里面选择Use secret text,点击Secret Text,添加Secret text凭据
把GitHub生成的秘钥填到这里
7) Pre Steps
添加一行命令,跳过了测试
8) Post Steps
输入shell脚本
这个shell脚本就是部署的重点了
注意:本文案例中Jenkins和部署项目都在同一台服务器上。
首先在服务器的/usr/local下创建jenkins/oa目录作为部署项目的目录
#!/bin/bash
# 切换到部署目录
cd /usr/local/jenkins/oa
echo "Stopping SpringBoot Application"
# 查找到之前jar文件运行的pid,干掉之前的进程
pid=`ps -ef | grep oa-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
# 从jenkins的workspace中把刚生成的jar文件覆盖oa目录下原来的jar文件
mv /var/lib/jenkins/workspace/DeployOA/target/oa-0.0.1-SNAPSHOT.jar /usr/local/jenkins/oa/oa-0.0.1-SNAPSHOT.jar
# 重新运行新的jar文件
BUILD_ID=dontKillMe nohup java -jar /usr/local/jenkins/oa/oa-0.0.1-SNAPSHOT.jar &
9) 构建设置中可以配置邮箱,构建后会邮件通知
最后保存任务,就完成了配置
部署项目测试
在原来项目中添加一段简单的测试代码
@RestController
public class HelloController
{
@GetMapping("/hello")
public String hello(){
return "Hello Jenkins!!";
}
}
提交代码到Github上
点到新建的构建任务里面,在左下方的构建历史中,可以看到最新的构建情况,点击控制台输出
控制台输出可以看到shell脚本执行的情况,以及最后的状态
运行效果就是最新提交的代码
结束
以上记录了一次使用Jenkins来自动部署SpringBoot项目的过程,以后有新的收获还会用博文来记录,和大家一起学习。
如果你感觉有用,那就点个赞吧,有问题也可以一起交流。
大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总