Jenkins自动化部署maven项目

791 阅读2分钟

1、什么是Jenkins?

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

1f3f9ca11ad06bcb071b69e6e4de2121.jpeg

2、Jenkins部署与安装

2.1 准备环境

  1. jdk环境,Jenkins是java语言开发的,因需要jdk环境。
  2. git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。
  3. 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等插件

image.png

全局工具配置

点击系统管理 全局工具配置 image.png

设置maven setting文件全局路径

image.png

设置JDK

image.png

设置Git安装路径

image.png 设置完成点击应用及保存

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

image.png

在Jenkins中设置私钥

image.png

设置目标服务器信息

image.png 设置成功后点击测试提示success表明已设置成功

3、Jenkins创建maven项目部署任务

3.1 创建项目

image.png

3.2 配置项目-源代码配置

image.png

3.3 配置项目-构建触发器设置

image.png

image.png

3.4 gitlab配置上述webhook地址及token

image.png

3.5 构建环境

image.png

3.6 Build

image.png

3.7 Post Steps

image.png

image.png

部署脚本

#!/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

传输新的包至目标服务器的目标文件夹并启动应用

image.png

启动应用脚本

#!/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的所有功能都学完在使用。