JenKins部署SpringBoot项目详解
JenKins的介绍
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
主要用于:
持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
监控一些定时执行的任务。
安装前的准备
安装JDK 以及maven
注意事项:
如果安装Jinkins2.0以上,JDK需要1.8以上
JenKins的下载
我们采用下载rpm包形式,下载地址npm的地址如下:(最新的为例)
下载地址
- 点击下载最新的jenkins-2.136-1.1.noarch.rpm,复制到服务器中
Jenkins的安装
安装rpm包
打开你移动文件的目录,在服务器命令中输入:
rpm -ivh jenkins-2.136-1.1.noarch.rpm
结果如下:
内置命令
rpm -qc jenkins查看安装位置 和配置文件地方
rpm -ql jenkins查看安装位置
修改Jenkins主目录
把主目录移到想存储的目录下:
mv /var/lib/jenkins /自定义/
方法1:
最简单的,不用修改配置文件,直接做一个软链接;
ln -sf /自定义/jenkins /var/lib/jenkins
方法2:
修改配置文件 /etc/sysconfig/jenkins
把 JENKINS_HOME="/var/lib/jenkins"
修改成保存的目录: JENKINS_HOME="/自定义/jenkins"
Jenkins配置jdk
输入 vi /etc/rc.d/init.d/Jenkins
修改Jenkins默认配置
- Jenkins的默认JENKINS_PORT是8080,同Tomcat默认端口冲突。故我们修改端口。
- 为了方便使用Jenkins的shell脚本来移动文件,备份文件,故我们把用户修改为root。
输入 vi /etc/sysconfig/Jenkins
修改Jenkins的配置文件还不能实现root的权限,需要输入一下三个命令:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
扩展
在该配置文件中可以修改jenkins的工作目录以及其他信息
启动jenkins服务
输入命令 service jenkins start
出现错误:
原因jdk没有配置成功,需要加上/java
配置完成重新输入显示成功:
卸载Jenkins
service jenkins stop
yum clean all
yum -y remove jenkins
rm -rf /var/cache/jenkins
rm -rf /var/lib/jenkins/
访问Jenkins
解锁Jenkins
打开浏览器输入服务器的ip和你刚配置的端口:
Jenkins就启动成功了!它自带Jetty服务器,剩下的工作我们全部在浏览器中进行。
第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令路径,查看该文件有个密码,复制下来确认就可以。
安装插件
我们选择推荐插件。
创建管理员
进入主页面
配置Jenkins
进入系统管理——》全局工具配置
配置JDK:
一定不要选择自动安装,因为我们已经有了jdk
配置Maven:
Maven一样,因为公司一般都有自己的私服,如果我们让jenkins下载,setting文件需要做出修改,由于我们已经安装了maven,不需要jenkins帮我们安装。
下载maven插件
进入系统管理——》插件管理
插件下载慢的问题
点击直接安装。插件下载地址
构建项目
创建任务
任务配置
构建环境选择控制台输出。
Bulid 我们写入maven的清除和编译。
我们选择编译成功后执行我们的shell脚本,复制你的脚本到文本中即可。
开始构建
回到项目目录,点击立即构建可以看到如下:
点击进度,查看控制台输出信息。
BUILD SUCCESS成功之后能够看到运行的脚本。
附录A :本文档shell脚本
#!/bin/bash
# author:xq
# date:08/09/2020
#进入编译文件的目录
BUILD_ID=DONTKILLME
echo "Backup Application Now 备份原文件"
cp -r -f /var/lib/jenkins/workspace/communication_gateway/target/communication_gateway-0.0.1.jar /project/communication_gateway/backup/communication_gateway-$(date +%Y%m%d_%H%M%S).jar
echo "Deploying Application 移动到工作目录"
#移动到工作目录 如果存在就覆盖
cp -r -f /var/lib/jenkins/workspace/communication_gateway/target/communication_gateway-0.0.1.jar /project/communication_gateway/communication_gateway-0.0.1.jar
#停止服务
echo "Stopping Application 停止服务"
killJar()
{
pid=`ps -ef|grep communication_gateway-0.0.1.jar|awk '{print $2}'`
echo "网关项目的jar的pid list :$pid"
if [ "$pid" = "" ]
then
echo "网关项目的jar pid no alive"
else
kill -9 $pid
fi
}
# 找到该服务的pidcommunication_gateway-0.0.1.jar
killJar
echo "Starting Application 启动项目"
java -jar /project/communication_gateway/communication_gateway-0.0.1.jar > /project/communication_gateway/communication_gateway.log >&1&
echo "Operation Done 项目启动完毕"