jenkins 设置 gitlab web hooks

背景

接口自动化期望代码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. 找了安全同事帮忙配置后,还是不通(怀疑人生了),思考可以通过什么方法快速验证网络还是不通过呢?于是尝试自己写一个简单接口验证;

时间: 2024-08-30 00:51:14

jenkins 设置 gitlab web hooks的相关文章

自动化发布-GitLab WEB Hooks 配置

钩子(hooks)Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件.触发器之类的东西类似).Git Hooks就是那些在Git执行特定事件(如commit.push.receive等)后触发运行的脚本.gitlab的web hooks跟git hook类似.也是当项目发生提交代码.提交tag等动作会自动去调用url,这个url可以是更新代码.或者其他操作. 配置目的: 由于系统属于后台接口系统,开发提交完git仓库后要实时的部署到测试环境,这时候就需要用到gitl

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

jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具. 主要记录以下两个: 利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建. 顺带介绍一下通过触发器构建,比如直接通过url去触发的方式. 一.jenkins结合webhook 1.jenkins配置 a.首先jenkins得需要安装两个gitlab的插件:Gitlab Hook Plugin和gitlab,插件的安

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明

搭建Jenkins从gitlab获取maven项目持续集成

环境 : centos7 安装Jenkins,这里选择使用service方式安装Jenkins,也可以下载Jenkins.war自己部署到tomcat下. #添加Jenkins源: $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

gitLab 全局hooks和custom_hooks,以及怎样实现自动pull

写代码的时候,git push到远程代码库后,往往还要连到服务器上pull代码才能进行测试.代码push后自动更新测试服务器的代码也算是一种刚需了. gitLab的钩子分为两大类:1.web hooks 2.custom hooks,这是调用git原生钩子,这里的钩子也有两种类型:(1)全局钩子 (2)每个项目对应的钩子. 这几天踩了很多坑,才用一种迂回的方法解决了问题.介绍一下GitLab和ubuntu的版本: (1)Ubuntu 16.04.1 LTS + GitLab Community

jenkins对接gitlab和git

1 需要的插件 jenkins的git插件和jenkins的gitlab插件. 2 对接gitlab 在系统配置中,随便起一个连接的名字,设置url,可以直接用ip地址,端口号默认是80,不需要写明. 证书为gitlab api token,即gitlab的private token. 配置好之后,test connection. 3 对接git 第一,要在jenkins服务器的jenkins用户下,生成ssh的公钥和私钥.必须是在jenkins用户下. 第二,ssh公钥放在gitlab的ssh

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki

Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护. 贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在

python 自动克隆gitlab web前端

当本地master分支执行push动作的时候,服务器端会自动执行master分支的clone操作(还可以执行一些自动化脚本) 原理: git hooks就是那些在git执行特定事件(如commit.push.receive等)后触发运行的脚本.gitlab的web hooks跟git hook类似.也是当项目发生提交代码.提交tag等动作会自动去调用url,这个url可以是更新代码.或者其他操作. 写一个最简单的Python3 web服务: from subprocess import call