目标:

1、Git被提交代码到对应分支,Jenkins对应的分支触发构建
(原来的方法是设定每分钟轮询的,这种方法能用但是不好)。
2、使用Pipeline脚本

方法:

使用Jenkins插件Generic Webhook Trigger,将Jenkins和Gitlab配合起来。

步骤:

1、Jenkins插件中心安装插件 Generic Webhook Trigger

2、设置API Token
Jenkins》系统管理》管理用户》修改用户信息》API Token》添加 Token》

点击 “生成” 按钮后,然后记录下token串,然后底下保存。

3、配置Gitlab Hook
登录Gitlab进入某个项目》Settings》Integrations》Add webhook

然后保存,下面可以手工触发进行测试。

当点击触发事件的时候,Jenkins 就会收到来自 Gitlab 的请求。
如下是我基于 Jenkins Pipeline 的关键脚本片段:

//省略代码若干//properties([disableConcurrentBuilds(), // 这行与本例无关buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '1', numToKeepStr: '3')), // 这行与本例无关pipelineTriggers([[$class: 'GenericTrigger',genericVariables: [[key: 'ref', value: '$.ref'],[key: 'before',value: '$.before',expressionType: 'JSONPath', //Optional, defaults to JSONPathregexpFilter: '', //Optional, defaults to empty stringdefaultValue: '' //Optional, defaults to empty string],[key: 'after',value: '$.after',expressionType: 'JSONPath', //Optional, defaults to JSONPathregexpFilter: '', //Optional, defaults to empty stringdefaultValue: '' //Optional, defaults to empty string],[key: 'projectName',value: '$.project.name',expressionType: 'JSONPath', //Optional, defaults to JSONPathregexpFilter: '', //Optional, defaults to empty stringdefaultValue: '' //Optional, defaults to empty string]],         causeString: 'Triggered on $projectName > $ref',//token: 'jenkins-token',// webhook触发端将token追加到请求后(放header中也可以)示例:http://admin:11c343cd5f00421@192.168.1.163:9999/generic-webhook-trigger/invoke?token=goodcol-jenkinsprintContributedVariables: true,printPostContent: true,        silentResponse: false,regexpFilterText: '$ref',regexpFilterExpression: 'refs/heads/' + BRANCH_NAME]])])
//省略代码若干//

PS:
1、如果你不是Gitlab,这个也很简单,你写个简单的程序,暴露一个 invoke 连接,然后上面配置的地址配置成自己的 invoke 地址。然后进行触发测试,你可以debug 看收到的报文内容。然后根据内容调整上面代码中的key和value识别即可。当然你也可以写一个普通程序,调用这个接口来触发构建。
所以,理论上这个触发的接口扩展性不错。
2、使用Jenkinsfile的Pipeline脚本来构建项目,如果你脚本内容修改了,你需要执行一次构建,才会生效新的 properties,如果你改的是脚本中的其他命令内容,则不需要。


小坑:

错误提示

很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步时会报错:

Url is blocked: Requests to the local network are not allowed

解决方法:

这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook,我们在设置里允许就行,具体步骤如下:

Settings》Network》Outbound requests》Expand》勾选 Allow requests to the local network from web hooks and services 或者文本域中添加白名单》Save Changes

插件官方地址: https://plugins.jenkins.io/generic-webhook-trigger

(END)

Jenkins+Gitlab+Generic Webhook Trigger插件相关推荐

  1. Jenkins: 使用Generic Webhook Trigger 插件配置webhook

    Jenkins: 使用Generic Webhook Trigger 插件配置webhook 一.安装Generic Webhook Trigger 插件 插件管理中安装 二.Jenkinsfile ...

  2. Jenkins Generic Webhook Trigger 插件使用

    Coding项目 Webhook 设置 1.进入项目设置 => 开发者选项 => Service Hook => 新建Service Hook 2.根据你的项目选择不同的事件触发类型 ...

  3. Generic Webhook Trigger 远程触发

    jenkins安装Generic Webhook Trigger插件 然后配置如下 最后送上pipeline完整脚本 pipeline {agent anyoptions{ timestamps () ...

  4. 【Jenkins插件】之Generic Webhook Trigger

    Generic Webhook Trigger 是一款Jenkins插件,安装后会暴露出来一个公共API,该插件接收到 JSON 或 XML 的 HTTP POST 请求后,根据咱们配置的规则决定触发 ...

  5. Generic Webhook Trigger 自动化构建jenkins

    1.概述 自动触发jenkins,我们希望是根据自己需要的分支构建才自动触发,有选择性构建,而不是全部构建,故有以下插件处理,Generic Webhook Trigger ,可以根据条件做过滤处理. ...

  6. Generic Webhook Trigger 实现特定提交触发自动构建

    Generic Webhook Trigger 实现特定提交触发自动构建 Jenkins与Gitlab联动可以通过webhook的方式来完成,gitlab上自带的webhooks 看似触发方式这么多, ...

  7. Jenkins + Generic Webhook Trigger + GitLab自动化部署流程配置

    Jenkins 插件安装与配置 登录Jenkis 进入插件管理并下载插件Generic Webhook Trigger jenkins系统配置中给GitLab授权 进入系统配置 找到并启用gitlab ...

  8. Jira+Jenkins+Gitlab自动化交付实践

    jira&confluence 产品的使用 atlassian官网 概述 Jira 可以帮助团队规划.分配.跟踪.报告和管理工作Jira Software:专为敏捷开发团队中的各个成员以及其他 ...

  9. jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

    一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...

最新文章

  1. puppet企业架构部署
  2. Ubutu16.04+Cuda9.2/9.0+Cudnn7.12/7.05+TensorFlow-gpu-1.8/1.6
  3. SQL优化—— 大批量插入数据
  4. TextView的跑马灯效果实现
  5. python中字符移位加密_1.1 移位密码加密解密python实现
  6. 拖拽元素自定义html模板,JS实现的自定义网页拖动类
  7. windows系统启用2个以上的mysql服务
  8. 2.移植uboot-添加2440单板,并实现NOR、NAND启动
  9. CCF NOI1076 进制转换
  10. [LeetCode] 100. Same Tree Java
  11. Linux下压缩mp3文件
  12. 自媒体行业的发展和前景
  13. 解决本地笔记导入博客中图片无法显示的问题
  14. 如何设置QQ和微信截图快捷键
  15. 代理服务是个什么东西?
  16. 什么是多租户saas架构设计
  17. 0x01 - 前期信息收集
  18. 在Ubuntu部署gitblit步骤
  19. Docker网络配置
  20. 眉山市职称计算机成绩,眉山市2014年第5次(10月份)全国职称计算机考试成绩

热门文章

  1. 博客迁移到GitCafe
  2. 《唐伯虎点秋香》对白
  3. 筷云蝉联2019 IEBE电商大奖,并获广东省网商协会会员授牌
  4. 【展馆设计】浅析展馆设计的重要性
  5. lis通道号_LIS接口编程的基本框架与入门
  6. Delphi 最近做的一个Delphi功能,查询数据显示到TChart上
  7. 了不起的互联网老男孩,在创业路上不掉队
  8. 三菱FX系列源码,C#上位机FX系列源码,串口485.232通讯
  9. @Override is not allowed when implementing interface method 解决办法
  10. 七牛CEO许式伟:服务端开发那些事儿