背景

接口自动化期望代码push后触发实现持续集成,代码push后,自动化执行jenkins的job。

步骤

准备工作

工具:jenkins,gitlab

jenkins需要安装插件:git plugin,gitlab hook plugin , gitlab plugin(有的插件是自带的,缺什么安装什么)

gitlab:确保有web hook权限,这个跟公司的gitlab有关,入口settings下的web hooks如下:

确保gitlab跟jenkins的连通性

hook的大概原理其实很简单:设置了web hooks后,当git项目触发了event后会往你填写的hooks URL发送一个post请求

那么首先要确保gitlab跟jenkins服务器的连通性

我这边是在jenkins服务器通过flask框架写了一个测试的接口:

from flask import Flask,request
app= Flask(__name__) @app.route("/test",methods=['GET', 'POST'])
def hello():
# return "Hello World!"
print(request.data);
return request.data if __name__ == "__main__":
app.run(host='0.0.0.0',debug=True,port=8080)

那么通过POST请求访问http://your-jenkins-server-ip:8080/test会返回你request的body数据

设置web hooks的URL为http://your-jenkins-server-ip:8080/test后保存,

点击“TEST HOOK”测试这个hook是否生效,正常的话,页面提示200

设置jenkins

源码管理设置

构建触发器设置,这个URL是gitlab web hook那里需要填写的URL

设置完毕后,点击保存

设置gitlab的web hook

URL填写jenkins上的那个URL,这里的就是上图的http://your-jenkins-server-ip:port/project/smart

测试是否生效

在gitlab上对代码进行update,然后commit;

去到jenkins查看job是否被执行:

小结

1. 需要弄清楚原理,是gitlab访问设置的hook URL;

2. 当设置jenkins和gitlab都设置的没问题,但TEST HOOK就是不通过的时候,需要思考为什么有这种情况?于是怀疑是公司gitlab和自己搭建的jenkins网络不通;

3. 找了安全同事帮忙配置后,还是不通(怀疑人生了),思考可以通过什么方法快速验证网络还是不通过呢?于是尝试自己写一个简单接口验证;

jenkins 设置 gitlab web hooks的更多相关文章

  1. 如何创建一个GitLab Web Hooks?

    Git Hooks Git 能在特定的重要动作发生时触发自定义的脚本. 这些脚本都被存储在 Git 目录下的 hooks 子目录中(.git/hooks).当 git init 初始化一个仓库时,Gi ...

  2. 自动化发布-GitLab WEB Hooks 配置

    钩子(hooks) hooks是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件.触发器之类的东西类似). Git hooks就是那些在Git执行特定事件(如commit.pu ...

  3. 【Devops】【docker】【CI/CD】Jenkins源码管理,设置gitlab上项目的clone地址 + jenkins构建报错:Please make sure you have the correct access rights and the repository exists.

    注意,如果 jenkins构建报错:Please make sure you have the correct access rights and the repository exists. 而此时 ...

  4. Jenkins + Ansible + Gitlab之gitlab篇

    前言 持续交付 版本控制器:Gitlab.GitHub 持续集成工具:jenkins 部署工具:ansible  课程安排 Gitlab搭建与流程使用 Ansible环境配置与Playbook编写规范 ...

  5. jenkins结合gitlab实现提交代码自动构建

    jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具. 主要记录以下两个: 利用jenkins和gitlab的webho ...

  6. Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

    一.环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴.具体只讲述Jenkins配置以及整个流程的实现. 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8.0_1 ...

  7. 使用jenkins SonarQube gitlab 构建自动化发布系统

    目前持续集成的生态越来越完善,工具也有很多,开源的或商业的.如: 最最流行的,也是使用最多的 Jenkins 有着持续集成DNA的ThoughtWorks GO.理念:"Deployment ...

  8. Kubernetes+Jenkins+Nexus+Gitlab进行CI/CD集成

    前面已经完成了 二进制部署Kubernetes集群,下面进行CI/CD集成. 一.流程说明 应用构建和发布流程说明: 1.用户向Gitlab提交代码,代码中必须包含Dockerfile: 2.将代码提 ...

  9. Jenkins+Ansible+Gitlab自动发布/回滚Spring项目

    一.实现方法流程图 流程图如下:代码托管在本地GitLab上(为了复现整套流水线,我直接使用了GitHub,懒得再搭建GitLab),开发完成后提交代码到代码仓库,[自动]触发Jenkins进行持续集 ...

随机推荐

  1. 使用jersey 注解包扫描类PackageNamesScanner

    Jersey 中自带一个包扫描,可以是包,或者具体类名 ,扫描的类型是自己定注解类型,实现功能更加大,可以是jar 包 可以是虚拟地址下的 Jersey 主要用来扫描Path Provider 类中同 ...

  2. STL系列

    STL—对象的构造与析构 STL—内存的配置与释放 STL—vector STL—vector空间的动态增长

  3. Excel导出百万级数据解决方案

    因项目业务,需要导出百万级数据到excel,在研究了各种方案后,最终确定了用POI的SXSSFWorkbook. SXSSFWorkbook是POI3.8以上新增的,excel2007后每个sheet ...

  4. PHPOffice/PHPExcel生成省市区三级联动的excel表格

    最近公司需要用到一个省市区三级联动的excel表格,但是数据都在数据库,又太多,人工不好制作,就让我这个phper来帮忙啦. 主要用到的是excel的定义名称,数据验证.其中数据验证的列表只能是一列或 ...

  5. iOS 模式详解—「runtime面试、工作」看我就 🐒 了 ^_^.

    引导 Copyright © PBwaterln Unauthorized shall not be *copy reprinted* . 对于从事 iOS 开发人员来说,所有的人都会答出「runti ...

  6. java.net.UnknownHostException 异常解决方案

    1)使用hostname命令设置新的host name与/etc/hosts本机hostname一致 #hostname 本机hostname 具体可以查看:/etc/hosts和//etc/sysc ...

  7. PHP删除文件夹及其文件

    <?php function deletedir($path){ $openpath = opendir($path); while ($f = readdir($openpath)){ $fi ...

  8. Everything 使用记录

    背景:在windows环境下,使用系统自带的搜索框经常出现搜索不到指定文件的问题,在网上无意发现了这款软件,真的很好用! 1 文件列表 建立文件列表主要是为了以后可以在指定的目录内查找自己想要的文件, ...

  9. JavaWeb学习归档(一) - HTTP协议总结

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本文转载自我的个人博客:http://www.codingme.net/post/java-web-01 HTTP协议简介 超文本传输协议(HTT ...

  10. request.getParameter()与request.setAttribute()的区别 (转载)

    request.getParameter()与request.setAttribute()的区别 request.getParameter(),request.setAttribute()区别如下: ...