使用Jenkins自动部署SpringBoot项目

安装Jenkins

我使用的操作版本是Centos7.6,可以使用以下命令查看系统安装的操作版本:
uname -a Linux查看版本当前操作系统内核信息
cat /proc/version Linux查看当前操作系统版本信息
cat /etc/redhat-release Linux查看版本当前操作系统发行版信息

我所了解的有2种方式安装Jenkins:
(1)下载一个war包,jenkins.war,直接执行java -jar jenkins.war &,以后台运行的方式启动jenkins;或者将这个war包放在tomcat的webapps目录下,用tomcat的方式启动jenkins的war包。
(2)用yum安装jenkins的方式。
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
sudo yum install jenkins

/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件
在这里插入图片描述
可以使用chmod命令给jenkins文件添加权限:
在这里插入图片描述

Jenkin配置

Jenkins的默认端口是8080,我是修改为8777,修改方式如下:
vim /etc/sysconfig/jenkins
在这里插入图片描述
我的虚机上的Java版本是我手动安装的,还需要修改Jenkins配置文件指向的Java路径,修改方式如下:
查看Java的版本,我使用的是1.8。
在这里插入图片描述
sudo vi /etc/init.d/jenkins
在这里插入图片描述
修改分配的内存大小
sudo vim /etc/sysconfig/jenkins
配置 -Xmx512m -Xms256m
在这里插入图片描述
查看密码的方式:cat /var/lib/jenkins/secrets/initialAdminPassword
在这里插入图片描述

运行Jenkins

sudo service jenkins status 查看jenkins的运行状态
在这里插入图片描述
sudo service jenkins start 启动jenkins
在这里插入图片描述
使用IP:PORT可以直接访问Jenkins。如果是使用的腾讯云等云厂商的虚拟机,需要开启安全组。

安装插件
在这里插入图片描述

Jenkins配置JDK,Maven,Git

路径:系统管理-系统配置-全局工具配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置远程服务器

我的Jenkins是部署在120.24.148.86上,而我的SpringBoot应用是部署在193.112.47.238和139.199.210.171上。所以,我需要将Jenkins上的应用上传到部署应用的服务器上。

先安装2个插件,路径:系统管理-系统配置-插件管理
在这里插入图片描述
在这里插入图片描述
配置连接的远程服务器。路径:系统管理-系统配置-系统配置-Publish over SSH
介绍下几个我使用的参数:
Name 连接的远程服务器的名称,这个可以随便定义。
Hostname 连接的远程服务器的地址。
Username 登录的账号名称
Remote Directory Jenkins将文件上传到这台服务器的地址。
我使用的是密码登录的方式,Passphrase / Password 填入连接的远程服务器的登录密码。
在这里插入图片描述

新建项目

路径:新建任务-输入一个任务名称-构建一个maven项目

设置git仓库的位置
在这里插入图片描述
设置pom.xml文件的根路径,使用clean install -Dmaven.test.skip=true命令打包项目。
在这里插入图片描述
Root POM的位置是相对项目的构建路径,我的项目的构建路径是/var/lib/jenkins/workspace/blog/,所以Root POM的地址就是blog/pom.xml。
在这里插入图片描述
SSH Server是在上面步骤中配置的要连接的远程服务器。

Source files 设置要传输的Jenkins服务器文件路径。全路径=项目的构建路径+Source files。
/var/lib/jenkins/workspace/blog/blog/target/blog-1.0.0.jar = /var/lib/jenkins/workspace/blog/ + blog/target/blog-1.0.0.jar

Remote directory 远程服务器传输文件地址。全路径等于Publish Over SSH中配置的Remote Directory加上这里的地址。
/usr/download/ = /usr/donwload/ + /

Remove prefix 要移除的前缀
最后上传的文件形式 = Source files - Remove prefix
blog-1.0.0.jar = blog/target/blog-1.0.0.jar - blog/target
最后会直接把blog-1.0.0.jar传输到上面设置的/usr/donwload路径下。

Exec Command 这个命令会在文件传输完成后执行。
在这里插入图片描述
我自己在远程服务器上的一个脚本,如果原来有正在运行的进程,先kill掉,然后再重新启动。

#!/bin/bash
source /etc/profile
echo "Begin Execute Shell"
pid=`ps -ef | grep blog-1.0.0.jar | grep -v grep | awk '{print $2}'`
echo "$pid"
if [ -n "$pid" ]
then
   echo "Kill SpringBoot Application"
   kill -9 $pid
   sleep 5
fi

echo "Start SpringBoot Application"
nohup java -jar -Dspring.profiles.active=dev1 /usr/download/blog-1.0.0.jar > /usr/download/blog.log &

问题

Jenkins异常停止:内存不够

我启动jenkins没过多久,jenkins就自动停止运行了,我猜测是内存不够导致的。

free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照,用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。

扩容之前的内存大小如下:
在这里插入图片描述
最近刚好阿里云有双十一的活动,我就自己购买了一台2核4G内存的ECS,再重新部署一下Jenkins。

扩容之后的内存大小:
在这里插入图片描述
要重新安装JDK,可以使用使用scp命令拷贝远程服务器的文件到本地文件夹。

scp remote_user@remote_ip:remote_file local_file
在这里插入图片描述

文件没有上传到远程服务器:Jenkins的workspace下的地址没有配置对

我的SpringBoot应用jar包是在/var/lib/jenkins/workspace/blog/blog/target下面,
在这里插入图片描述
我项目的构建路径是在/var/lib/jenkins/workspace/blog,所以配置的地址应该是blog/target/*.jar,一开始配置错了,导致文件没有上传到远程服务器。
在这里插入图片描述
在这里插入图片描述

执行远程服务器的脚本后,SpringBoot应用没有启动

要在脚本的前面加上source /etc/profile。
执行 nohup java -jar xxx.jar 需要把jar包的路径也带上。
我的执行路径是:nohup java -jar -Dspring.profiles.active=dev1 /usr/download/blog-1.0.0.jar > /usr/download/blog.log &

参考文档

linux查看操作系统版本、内存信息
在centos中使用rpm安装包安装jenkins
运行“服务启动jenkins”时,Jenkins失败
linux下修改安装版jenkins默认端口号
Linux下Jenkins部署内存溢出处理问题
如何查看Linux的内存使用状况
scp 远程文件拷贝命令
linux服务器上安装jdk8的两种方法
Linux安装maven(详细教程)
linux 下安装git的步骤方法
jenkins遇到的坑-jenkins无法将war包发送到远程服务器之路径配置问题
使用Jenkins构建、部署spring boot项目
Jenkins自动构建部署项目到远程服务器上
Jenkins执行远程服务器Shell脚本启动SpringBoot 的坑

猜你喜欢

转载自blog.csdn.net/u012734723/article/details/109543506
今日推荐