【Jenkins】Jenkins实现自动部署后台应用,自动部署Maven项目,钩子触发器

目录

一、环境配置

1.1 JDK环境配置

1.2 Maven的安装配置

1.3 git的安装

 二、Jenkins的安装配置

2.1 Jenkins的下载

2.2 使用Jenkins

2.2.1 启动War包

2.2.2 防护墙开启8080端口

2.2.3访问jenkins

2.2.4 Jenkins网站的使用

2.2.5 jenkins插件仓库的配置

​2.2.6 工具设置(Java,Maven,Git)

2.2.7 插件的安装

三、Jenkins实现拉取,打包,部署操作

3.1 新建Maven任务

3.2 配置Git仓库地址

3.3 配置打包后的脚本

3.4 配置包所在服务器中的环境和脚本

3.5 提交代码,打包部署

3.6 错误原因查询

3.6.1 查看控制台日志

3.6.2 进程自动结束原因

四、WebHook

4.1 新建任务的触发器

4.2 Git仓库配置WebHook

4.3 测试效果


废话不多说,我们直接开始上手操作!!!

一、环境配置

我们想利用jenkins帮我们自动从git上拉取代码,完成代码的打包,部署,需要一些环境的支持,包括JDK,Maven, git,下面我们来安装和配置一下这些环境。


1.1 JDK环境配置

1.1.1 下载

JDK下载地址:Oracle官网下载JDK

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

这里我们使用的是JDK8,目前Oracle已经开放了JDK17了.............. 

1.1.2 安装

接下来就是安装的步骤:

1. 新建文件夹  /usr/local/java

mkdir /usr/local/java

2. 将压缩包上传到/usr/local/java文件夹中,使用Xshell,Xftp都可以

3. 解压压缩包

tar -zxvf jdk-8u321-linux-x64.tar.gz

4. (可选)这里可以把之前的压缩包删除,也可以不删

rm -rf jdk-8u321-linux-x64.tar.gz

此时文件的目录接口应该是这样的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 1.1.3 配置环境变量

 1.编辑 /etc/profile文件,在文件的末尾加上如下配置

#java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_321
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

2.使配置生效

source /etc/profile

1.1.4 测试java配置有没有成功

 在命令行中输入  java -version  显示如下,即表示配置成功

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16


1.2 Maven的安装配置

1.2.1 下载

Maven下载地址:Maven下载

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 1.2.2 安装

同样的,我们重复上面和java一样的操作

1.新建文件夹

mkdir /usr/local/maven

2.上传压缩包到 /usr/local/maven目录下

3.解压

tar -zxvf apache-maven-3.8.4-bin.tar.gz

4.(可选)删除maven压缩包

rm -rf apache-maven-3.8.4-bin.tar.gz

此时,我们的目录结构应该下面这样子的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_17,color_FFFFFF,t_70,g_se,x_16

 1.2.3 maven的配置

接下来,我们配置一下maven的本地仓库地址以及镜像仓库的地址

vim  /usr/local/maven/apache-maven-3.8.4/conf/settings.xml 

添加如下配置:

在settings标签下添加

<localRepository>/usr/local/maven/repo</localRepository>

在mirrrors标签中将原有的配置删除,添加阿里云的镜像

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
	<url>https://maven.aliyun.com/repository/public</url>
</mirror>

配置完成之后,保存并退出  :wq

1.2.4 配置环境变量

编辑 /etc/profile 文件

vim /etc/profile

在末尾添加如下配置

#maven environment
export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.4
export PATH=$PATH:${MAVEN_HOME}/bin

使配置生效

source /etc/profile

1.2.5 检查maven有没有配置成功

输入指令  mvn -v 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 如此,maven也配置成功了


1.3 git的安装

git从yum仓库中下载就可以了

yum install git -y

下载完成之后,查看一下git在什么位置,后面要用到

whereis git

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_17,color_FFFFFF,t_70,g_se,x_16


 二、Jenkins的安装配置

2.1 Jenkins的下载

下载地址:Jenkins下载

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

2.2 使用Jenkins

2.2.1 启动War包

将下载好的War包放入指定文件夹中,我这里是放在了/home/sofrware/jenkins中

使用命令启动war包

nohup java -jar /home/software/jenkins/jenkins.war > jenkins.log

2.2.2 防护墙开启8080端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

如果使用云服务器的小伙伴,可以直接在云服务网站上开启就行了,不需要操作防火墙。

2.2.3访问jenkins

 浏览器访问:主机IP:8080  就可以访问到了,如果不知道主机的IP的话,可以使用

ifconfig

命令查看一下。

2.2.4 Jenkins网站的使用

 刚刚进来,可以看到这个界面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里需要我们输入管理员的密码,这个密码上面已经给出了访问的地址,也可以通过我们之前的jenkins.log日志获取到。

cd /home/software/jenkins
cat jenkins.log

可以看到下面这一段内容

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 只需要把中间的这个密码复制上来就行了。

复制密码,点击继续,可以看到下面的画面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 我们这里点击安装推荐的插件就可以了,如果有基础的小伙伴,可以选择插件来安装。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 此时正在帮助我们安装插件,过程可能有点漫长,等待就行了。

安装完成后,点击继续,这里如果安装失败了也没问题,后面我们配置了镜像仓库之后,再安装。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里会让我们创建一个管理员的账号和密码。

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里需要我们设置jenkins的访问地址,如果有公网地址的话,最好用公网地址,没有的话,就默认当前访问的地址就行了。

2.2.5 jenkins插件仓库的配置

 首先我们配置一下插件仓库的地址,不然下载插件的速度太慢了

英文:点击 Manage Jenkins  -> Manage Plugins-> Advance -> Update Site

中文:点击 系统管理 -> 插件管理 -> 高级 -> 升级站点

设置成:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

另外,我们需要修改一下jenkins本地文件的插件仓库地址

cd /root/.jenkins/updates

我们要修改的是default.json文件

sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json 

修改完成之后,需要重启一下jenkins,只需要在地址栏后面加入/restart就可以重启了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_162.2.6 工具设置(Java,Maven,Git)

进入系统设置 -> 全局工具设置里面

进入Manage Jenkins -> Global Tool Configuration

1. 配置JDK

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

2.配置Git 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 3.配置Maven

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 注意:这里我们要把自动安装的按钮给取消掉,因为之前我们已经安装过所需要的所有环境了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

2.2.7 插件的安装

自动拉取打包代码需要一些插件的支持,我这里用的是SpringBoot项目,用的是Gitee,所以这里需要安装这两个插件

进入插件管理 -> 可选插件

搜索下面两个插件:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_10,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_15,color_FFFFFF,t_70,g_se,x_16

 点击安装,安装好后重启就行了。如果你们使用的是gitLab,gogs或者是github,只需要安装对应的插件就行了。

重启后,点击新建项目可以在新建任务中看到构建Maven项目

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

三、Jenkins实现拉取,打包,部署操作

3.1 新建Maven任务

输入名称》》勾选“构建一个Maven项目”》》点击确定

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

3.2 配置Git仓库地址

首先需要在Git仓库中新建一个私有的仓库,这里我就不详细展开说了,我这里用的是Gitee,如果不会的小伙伴,自己搜索一下如何使用Gitee.

复制Gitee的地址

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 在Jenkins中粘贴地址,这时候会出现以下的报错

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 因为我们的仓库是私有的,所以,没有账号密码,Jenkins是获取不到你的代码的,我们需要添加一下凭证。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 再回到之前的Git配置地方

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这样仓库地址就配置Ok了

3.3 配置打包后的脚本

完成上面两步,点击构建之后,其实就可以完成拉代码和打包了

进入jenkins的运行空间内部

cd /root/.jenkins/workspace

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 我们进入到目录里面查看一下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 可以看到此时jar已经有了,接下来完成的就是让jar能跑起来。

进入jenkins刚刚我们创建的项目的配置中,输入项目打包后的命令

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

在文本框中输入以下内容

#!/bin/bash

echo "开始部署项目..."
DIR="/data/app"
projectName="test-1.0"

echo "移动上个版本的jar..."]
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
	mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi

echo "移动jar到制定目录..."
cp ${WORKSPACE}/target/*.jar $DIR/${projectName}/${projectName}.jar

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh

echo "success"

这里的命令含义是:

DIR:项目部署的文件夹,我们要把Jar包移动到这个里面来运行。

projectName:jar包的名称,如果不确定可以在maven项目中指定jar的名字。

if中的内容:判断DIR下的目录内是否已经有了相同名称的JAR,如果有的话,将这里面的Jar给移出去,并在名称后加上时间戳,方便我们做备份

cp后面的内容:将我们构建生成的jar,移动到我们项目的目录内。

sh后面的内容:我们要在项目文件夹中写两个文件,一个是stop.sh,一个是start.sh,stop.sh是把我们之前起的jar服务给关闭,start.sh是将我们的jar启动。

3.4 配置包所在服务器中的环境和脚本

新建项目目录 /data/app

mkdir -p /data/app

根据项目的名称再建三级的文件夹,我这里项目名称是test-1.0

mkdir -p /data/app/test-1.0

进入到该目录内新建两个文件

touch start.sh
touch stop.sh

编辑start.sh

vim start.sh
#!/bin/bash
set -e
set -o pipefail

APP_ID=test-1.0
APP_DIR="/data/app"

nohup /java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > app.log & start_ok=false

编辑stop.sh

vim stop.sh
#!/bin/bash
APP_ID=test-1.0
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

3.5 提交代码,打包部署

我这里已经建了一个SpringBoot的项目,这里有不懂的小伙伴,可以自学一下,或者直接从网上找。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 端口设置的是9080 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_11,color_FFFFFF,t_70,g_se,x_16

 我们来构建一下,看看能不能访问,别忘了,记得把服务的端口打开,我这里要打开9080这个端口

点击构建

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 试试来访问一下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

3.6 错误原因查询

这里有些人可能会访问不到,可能的原因有很多,我这里列举几种:

3.6.1 查看控制台日志

在我们的构建信息中,是可以查看到控制台的输出的,如果是脚本错误,或者一些原因,可以通过控制台输出的错误原因进行更改。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

3.6.2 进程自动结束原因

这里还有一种情况,就是控制台并没有报错,但是就是访问不到,还有一种可能的原因就是jenkins在构建完成之后,会自动的把当前进程给杀死,我们这里配置一下不要杀死线程就行了:

在节点管理中配置一下参数:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

新建一个变量:

键:BUILD_ID

值:DontKillMe 

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

四、WebHook

钩子技术,可以帮助我们实现从git提交代码后,Jenkins自动开始拉取代码,并帮助我们打包,然后构建,发布,实现全自动,这里用到的就是钩子技术。

还记得我们之前下载过的一个gitee的插件吗?这里就派上了用场。

4.1 新建任务的触发器

我们继续回到刚刚任务的配置中,找到构建触发器

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

看到此时的这个选项就是插件支持的,如果没有安装插件,这里是没有这个选项的,如果你用的是gitLab、gogs、github这里同样也会有相应的选项。

注意一点,这个选项后面有一个URL地址,并且提醒我们需要在Gitee WebHook中填写。什么意思呢?其实就是,类似于我们做的SpringBoot应用暴露出来的接口,这个接口直接触发刚刚任务的构建,其实就是这么简单。

继续往下翻,可以看到有一个密码的选项,我们这里直接点自动生成

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

4.2 Git仓库配置WebHook

 打开我们的仓库地址,进入到管理页面中去

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 进入到WebHook,或者叫钩子的选项中去

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 输入地址和密码,勾选触发时机

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

4.3 测试效果

我们提交一下代码看看

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

进入Jenkins,可以看到,我们并没有点立即构建,Jenkins自动就开始构建了,甚至可以看到是由哪一个用户触发的构建。 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 测试访问一下,看看能不能访问

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_19,color_FFFFFF,t_70,g_se,x_16

如此,我们就实现了使用Jenkins自动化部署Maven类型的项目。

下一章节中,我将介绍一下,Maven如何部署前端项目。 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值