Jenkins+Gitlab+Generic Webhook Trigger插件
目标:
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插件相关推荐
- Jenkins: 使用Generic Webhook Trigger 插件配置webhook
Jenkins: 使用Generic Webhook Trigger 插件配置webhook 一.安装Generic Webhook Trigger 插件 插件管理中安装 二.Jenkinsfile ...
- Jenkins Generic Webhook Trigger 插件使用
Coding项目 Webhook 设置 1.进入项目设置 => 开发者选项 => Service Hook => 新建Service Hook 2.根据你的项目选择不同的事件触发类型 ...
- Generic Webhook Trigger 远程触发
jenkins安装Generic Webhook Trigger插件 然后配置如下 最后送上pipeline完整脚本 pipeline {agent anyoptions{ timestamps () ...
- 【Jenkins插件】之Generic Webhook Trigger
Generic Webhook Trigger 是一款Jenkins插件,安装后会暴露出来一个公共API,该插件接收到 JSON 或 XML 的 HTTP POST 请求后,根据咱们配置的规则决定触发 ...
- Generic Webhook Trigger 自动化构建jenkins
1.概述 自动触发jenkins,我们希望是根据自己需要的分支构建才自动触发,有选择性构建,而不是全部构建,故有以下插件处理,Generic Webhook Trigger ,可以根据条件做过滤处理. ...
- Generic Webhook Trigger 实现特定提交触发自动构建
Generic Webhook Trigger 实现特定提交触发自动构建 Jenkins与Gitlab联动可以通过webhook的方式来完成,gitlab上自带的webhooks 看似触发方式这么多, ...
- Jenkins + Generic Webhook Trigger + GitLab自动化部署流程配置
Jenkins 插件安装与配置 登录Jenkis 进入插件管理并下载插件Generic Webhook Trigger jenkins系统配置中给GitLab授权 进入系统配置 找到并启用gitlab ...
- Jira+Jenkins+Gitlab自动化交付实践
jira&confluence 产品的使用 atlassian官网 概述 Jira 可以帮助团队规划.分配.跟踪.报告和管理工作Jira Software:专为敏捷开发团队中的各个成员以及其他 ...
- jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战
一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...
最新文章
- puppet企业架构部署
- Ubutu16.04+Cuda9.2/9.0+Cudnn7.12/7.05+TensorFlow-gpu-1.8/1.6
- SQL优化—— 大批量插入数据
- TextView的跑马灯效果实现
- python中字符移位加密_1.1 移位密码加密解密python实现
- 拖拽元素自定义html模板,JS实现的自定义网页拖动类
- windows系统启用2个以上的mysql服务
- 2.移植uboot-添加2440单板,并实现NOR、NAND启动
- CCF NOI1076 进制转换
- [LeetCode] 100. Same Tree Java
- Linux下压缩mp3文件
- 自媒体行业的发展和前景
- 解决本地笔记导入博客中图片无法显示的问题
- 如何设置QQ和微信截图快捷键
- 代理服务是个什么东西?
- 什么是多租户saas架构设计
- 0x01 - 前期信息收集
- 在Ubuntu部署gitblit步骤
- Docker网络配置
- 眉山市职称计算机成绩,眉山市2014年第5次(10月份)全国职称计算机考试成绩
热门文章
- 博客迁移到GitCafe
- 《唐伯虎点秋香》对白
- 筷云蝉联2019 IEBE电商大奖,并获广东省网商协会会员授牌
- 【展馆设计】浅析展馆设计的重要性
- lis通道号_LIS接口编程的基本框架与入门
- Delphi 最近做的一个Delphi功能,查询数据显示到TChart上
- 了不起的互联网老男孩,在创业路上不掉队
- 三菱FX系列源码,C#上位机FX系列源码,串口485.232通讯
- @Override is not allowed when implementing interface method 解决办法
- 七牛CEO许式伟:服务端开发那些事儿