Jenkins 之 单节点 对接GitLab搭建自动化部署项目环境 与 实战测试 (四)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Davis_Dxs/article/details/82878005

Jenkins 之 单节点 对接GitLab搭建自动化部署项目环境 与 实战测试 (四)

如梦令 · 常记溪亭日暮       

常记溪亭日暮,沉醉不知归路。

兴尽晚回舟,误入藕花深处。

争渡,争渡,惊起一滩鸥鹭。                                                                

目录

Jenkins 之 单节点 对接GitLab搭建自动化部署项目环境 与 实战测试 (四)

Jenkins 服务器 环境

对接 GitLab 搭建自动化部署项目环境 主要注意点

如何实现对 GitLab 上项目 push 的监听?

Jenkins 对接 GitLab 所需插件

Jenkins 配置 GitLab Private token

GitLab 配置 Webhooks

Jenkins Gitlab 自动化部署 测试 实战

测试项目介绍

Jenkins 创建任务

测试 Jenkins GitLab 自动化部署


Jenkins 服务器 环境

Linux: Centos 7.3 阿里云服务器一台。

IP: 47.99.66.88 (假的);真实地址不方便透露,但是在测试时实际用的是真实地。

开放端口:8080 、8088、22 等。

防火墙:关闭

该服务器上 已经配置: Jenkins、Git、 Maven、JDK、Tomcat、MySQL

Jenkins 访问地址:47.99.66.88:8088 (Jenkins 启动端口已经设置成:8088)

代码仓库类型:GitLab


对接 GitLab 搭建自动化部署项目环境 主要注意点


如何实现对 GitLab 上项目 push 的监听?

因为我们要实现 我只要提交一下代码,即 push 一下。 jenkins 就会帮我们拉下来、打包、部署。所以如何让 Jenkins 知道 github 上的指定的项目 有没有进行 push 操作是关键之处。

而实现监听,则需要安装一些插件与还有对应的一些配置。

Jenkins 对接 GitLab 所需插件

Gitlab Hook Plugin:这个插件是使用 GitLab webhook 需要的插件。而且安装这个插件之后,我这边一直出现一个警告:

我也没能解决这个警告,但是这个警告不影响插件使用。

Gitlab Authentication plugin: 环境变量注入,目前用于获取 Gitlog,并传递给 Fir.im 上传信息(百度所得,不得其解)。

GitLab Plugin:这个插件看着就该安装,具体原因也是不清楚。


Jenkins 配置 GitLab Private token

系统管理 --> 系统设置 --> 然后再系统设置页面找到  GitLab,如下图所示:

参数解释:

Connection name: 给这个GitLab的服务器地址起个名字。

GitLab host URL:  就是你们各自搭建或者公司GitLab的域名,没域名的就是IP,别忘记 端口号。

Credentials:  在 添加 Credentials(凭证)前,需要到 GitLab 中找到自己的 private token。

private token 位置:  GitLab --> Settings --> Accout 

添加 Credentials:

类型:类型一定要选择  GitLab API token

范围:默认就行

API token: 这里就是要填写 你的  private token。

ID:  你用来登录 GitLab 的 账号。

描述:无所谓

添加完成后,选择刚刚添加的 Credentials 。这时点击  Test Connection 按钮可以进行测试,成功结果如图所示:

点击左下角的 保存 按钮,则 Jenkins 配置 GitLab 服务已经完成。


GitLab 配置 Webhooks

如果大家看了我的另一篇对 GitHub 搭建自动部署环境 文章的话,应该会对 webhooks 有一些了解。我就粘贴复制一下。

Webhooks 是什么?

一个钩子函数,指定触发改钩子函数的事件,触发后,向指定的 url 接口地址发送 当前项目发生的改变。(个人理解)

webhooks 是项目级别的,每个 project 都有各自的 webhooks。所以,只需要设置我们需要自动化部署项目的webhooks。

但是 GitLab 在配置 触发钩子函数的URL 是在创建任务时才能获得,所以我们只能在创建任务后才能后的 回调的钩子函数地址。

我们先把如何配置,以及在哪里配置讲一下。

由于 各自 GitLab 版本不一致,配置 webhooks 的位置也就不同。我在这之讲一下 我自己的 GitLab 环境 webhook 的位置。

URL:回调钩子接口 地址,由 Jenkins 在创建项目时生成。

Secret Token: 凭证 ,由 Jenkins 在创建项目时生成。

Trigger:  触发,向回调钩子接口 发送请求的事件,这里我只选择 Push events。即 提交代码时触发。

大家读到这里,请大家向后翻阅一下,到 Jenkins 创建任务 这里,这里有我们需要的 URL 地址 与 Secret Token。

在拿到之后,填写完成之后点击 Add Webhook 按钮。

点击 Test 可以进行测试。成功结果如下图所示:


Jenkins Gitlab 自动化部署 测试 实战


测试项目介绍

我简单写了一个 Springboot 的 Demo 程序,只有一个接口,代码如下:

/**
 * Created by Mr.Dxs on 2018/9/27.
 */
@RestController
@RequestMapping(value = "/sys")
public class JenkinsController {


    @RequestMapping(value = "/jenkins",method = RequestMethod.POST)
    public Map demo(@RequestBody Map map){

        String jenkins = (String) map.get("jenkins");
        String name = (String) map.get("name");

        Map reponse = new HashMap();
        reponse.put("jenkins",jenkins);
        reponse.put("name",name);
        reponse.put("date",System.currentTimeMillis());

        return reponse;
    }

}

Jenkins 创建任务

General

GitLab Connection: 这里是下拉选择框,还记得我们之前在 系统管理-->系统设置中 配置的 GitLab Pirvate token 时,

其中的 Connection name,如图所示:

源码管理

在此处,对于源码管理中所填写的内容,我不再讲述,您可以参考我的另一篇 Jenkins GitHub 自动化部署

构建触发器

构建触发器、我们前面所需要的 回调钩子接口地址 就在此处。

图中所指的地址: http://www.fock.xyz:8088/project/GitLab_Zw   就是。

别忘记还有 Secret Token

点击图中的 Generate 按钮,就会生成 Secret token. 此时 让我们回到配置 webhooks 这一节,去配置 webhooks。

配置过 webhooks 之后,我们的创建任务还需要继续往下走。。。

接下来直接就是 构建

构建

BUILD_ID=DONTKILLME                                              防止杀死 tomcat 进程

. /etc/profile                                                                     加载环境变量

export PROJ_PAT=`pwd`                                               Jenkins的任务路径,clone的代码就在该目录下。

export TOMCAT_APP_PATH=/opt/soft/tomcat                      tomcat 路径,根据各自服务器路径进行制定

sh $PROJ_PATH/cli/deploy.sh                                      执行自动化部署脚本,该脚本在从github上clone下来的项目中。

Shell 脚本(deploy.sh)

#!/usr/bin/env bash

# 编译部署

# 项目路径
#export PROJ_PATH='pwd'

# Tomcat 路径  此时路径为:47.100.177.120 节点tomcat路径
#export TOMCAT_APP_PATH=/opt/soft/tomcat

# base 函数
killTomcat()
{
    pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    echo "tomcat Id list: $pid"
    if [ "$pid" = "" ]
    then
        echo "no tomcat pid alive"
    else
        kill -9 $pid
    fi
}

# 进入项目目录
cd $PROJ_PATH/jenkins

# 执行maven命令 进行清除及编译打包
mvn clean install

# 停止 tomcat
killTomcat

# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/*

# 复制新工程
cp $PROJ_PATH/jenkins/target/jenkins.war $TOMCAT_APP_PATH/webapps/

# 启动tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

保存之后,会自动跳转到该任务的页面,如下图所示,点击立即构建。

如果没有别的问题,就会构建成功。


测试 Jenkins GitLab 自动化部署

测试部署是否成功

请求接口

响应数据

测试自动化部署

我们在本地修改代码,然后进行提交代码(push),观察 Jenkins 是否会自动构建。如果会自动构建成功,那我们再次测试接口,观察我们的修改是否在远程服务器上更改。

修改代码如下:

提交代码:

这时你会发现 Jenkins 已经在自动构建项目,如图所示:

我们再次测试接口,结果如下:

此时,项目代码已经重新拉取、打包、部署。诚然,已更新。

到此,该博文结束。

个人能力有限,不足之处,请多多指教、留言。

在该篇文章中有许多博主个人未能解决的问题,如果各位有能力解决,请留言,感激万分!

技术交流群:


猜你喜欢

转载自blog.csdn.net/Davis_Dxs/article/details/82878005