1、什么是Jenkins?
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
2、Jenkins部署与安装
2.1 准备环境
- jdk环境,Jenkins是java语言开发的,因需要jdk环境。
- git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。
- maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle 以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置
2.2 下载安装Jenkins
添加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
安装Jenkins
yum install epel-release # repository that provides 'daemonize'
yum install java-11-openjdk-devel
yum install jenkins
配置文件
/usr/lib/jenkins/ #jenkins安装目录,WAR包会放在这里。
/etc/sysconfig/jenkins #jenkins配置文件 可修改端口 默认是8080
/var/lib/jenkins/ #默认的JENKINS_HOME。
/var/log/jenkins/jenkins.log #日志文件
启动Jenkins
systemctl start jenkins
2.3 jenkins 插件安装及全局配置
插件安装
安装maven、gitlab等插件
全局工具配置
点击系统管理 全局工具配置
设置maven setting文件全局路径
设置JDK
设置Git安装路径
设置完成点击应用及保存
Publish over SSH 设置
秘钥方式登录生成公钥和私钥
#生成rsa密钥,回车
ssh-keygen -t rsa
#把公钥内容追加到认证文件中
cat id_rsa.pub >> authorized_keys
#授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys
把公钥追加到目标服务器认证文件中
cd /root/.ssh
vim authorized_keys
在Jenkins中设置私钥
设置目标服务器信息
设置成功后点击测试提示success表明已设置成功
3、Jenkins创建maven项目部署任务
3.1 创建项目
3.2 配置项目-源代码配置
3.3 配置项目-构建触发器设置
3.4 gitlab配置上述webhook地址及token
3.5 构建环境
3.6 Build
3.7 Post Steps
部署脚本
#!/bin/bash
#Maven打包后的程序名称
filename=abeltest-1.0-SNAPSHOT.jar
echo 程序名称 : $filename
#进入程序运行目录
cd /opt/abeltest
#若项目已启动,杀死旧进程
PID=$(ps -ef | grep $filename | grep -v grep | awk '{ print $2 }')
if [ ${PID} ];
then
echo 'Application is stpping...'
echo kill $PID DONE
kill -9 $PID
else
echo 'Application is already stopped...'
fi
if [ ! -f "$filename" ]; then
echo "$file不存在"
else
# 备份发布之前的包
var=bak_$(date +%Y%m%d%H%M)
cp $filename $var$filename
fi
echo "backup jar success!"
rm -rf /opt/abeltest/new
传输新的包至目标服务器的目标文件夹并启动应用
启动应用脚本
#!/bin/bash
#Maven打包后的程序名称
app=abeltest-1.0-SNAPSHOT
#进入程序运行目录
cd /opt/abeltest
#防止进程被杀死
BUILD_ID=dontKillMe
#后台启动项目,日志文件为out.log
nohup java -jar $app.jar >> out.log 2>&1 &
exit 0
4、总结
自动化部署Jenkins,作为一款工具,有着非常强大的功能,
上面我们只是讲了生产上做Java自动化部署的一个主要流程,
其他的功能,大家可以参看官方文档:jenkins.io/zh/doc/
但是,本着学习是为了解决生产的原则,
个人建议,用到Jenkins的什么功能就学什么就可以了,
没必要把Jenkins的所有功能都学完在使用。