Jenkins+git+webhook自动触发部署和测试任务

Jenkins+git+webhook自动触发部署和测试任务

需求:

目前上线前会将需要上线的代码push到release分支,然后由人工填写参数点击触发jenkins上的任务。希望这个过程能完成自动化,只要有人往release上推代码,就自动跑部署release分支并测试

解决办法及步骤:

1.在jenkins里需要自动触发的job里的“源码管理”部分添加设置,如下图。填好git仓库url和需要检测的分支名称

注意事项:

a.在填url的时候可能会提示找不到命令的错误,遇到这个错的解决办法是去jenkins系统管理->系统设置,找到git设置部分,在Path to Git executable里填上git的路径,这个路径在服务器上执行命令which git可得到。

b.还有可能遇到的是报Permission denied这样的错误。这是由于jenkins运行时所用的系统用户没有访问git仓库权限导致的。需要在运行jenkins的用户目录下生成git的公钥和私钥,并将owner改成该用户。

2.在jenkins需要触发的job里“构建触发器”部分勾选Poll SCM,但里面什么都不填。

如果填则是填crontab那种格式的命令。填了的话就是让它每隔一段时间去检查下源码管理里所设置的git仓库里的分支有没有更新,有更新则触发该job,没更新则不触发。这样设置的缺点是检查得如果太过频繁,是对网络资源的浪费,但是检查时间隔得太长触发又不及时。

而且使用过程中有个问题,就是比如5分钟检查一次,第一次检查的时候检测到有更新,于是执行job,这个job执行的时间比较长超过了检查时间5分钟,那下一次检查的时候,由于这个job还正在运行中,则它还会认为这更新没有被job执行,如此便会再次触发job。只有在触发的job执行完时,它才知道这个更新是被这个构建执行过的,不用再触发了。

所以官方上也并不推荐这种方法,推荐的是远程触发的方式,比如用git的post-receive钩子触发,只要在钩子里写上这句即可。

curl http://yourserver/git/notifyCommit?url=[&branches=branch1[,branch2]*][&sha1=]

由于我们的项目用的是gitLab,然后gitLab有个webhook可以用。原理上跟post-receive钩子是差不多的。

3.在Jenkins里装一个插件https://wiki.jenkins-ci.org/display/JENKINS/Gitlab+Hook+Plugin

看名字就知道这个插件是为了配合gitLab用的

4.在gitLab项目中添加web hook(Project Settings --> WebHooks)

gitlab的web hook有很多种,可以满足不同的需求,因为我们的需求是push代码的时候触发,所以选的是Push events.

Url的作用:这个地方填的url是gitlab发请求用的。其实它的原理就是当开发人员在git上的操作触发这个hook时,gitlab就向这个url发一个post请求。请求中带着一堆参数比如提交者是谁,提交的分支是哪个,commit号是多少等等。接受这个请求的那端可以利用这些信息去处理后续的一些事情,比如部署测试通知等等。

此处,由于我们在jenkins上安装了gitlab hook插件,所以我们只需要按照它的使用方法在url里填上以下链接即可:

http://your-jenkins-server/gitlab/notify_commit

效果:

有人release上提交代码后,就会自动触发jenkins上的任务。push到别的分支是不会触发的。

参考文献:

http://www.jianshu.com/p/ad018160aff9

http://blog.csdn.net/xinluke/article/details/52921254

时间: 2024-10-25 11:19:39

Jenkins+git+webhook自动触发部署和测试任务的相关文章

jenkins+git+maven搭建自动化部署项目环境

简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-        lulu/cxf_demo-Maven-Webapp)     系统:centos6.5 maven: Apache Maven 3.3.9 git:git version 2.0.0 1.首先安装git,看以前另外一篇博客 http://www.cnblogs.co

jenkins+ git +maven 自动持续集成部署

1.安装jenkins,官网地址https://jenkins.io/ 2.配置jenkins的全局配置 3.安装必须的插件  这个是部署的插件 Deploy to container Plugin,这是maven的插件 Maven Integration plugin 4.项目配置 6.tomcat 的配置 打开conf目录下面的tomcat-users.xml 添加以下内容<user username="admin" password="admin" ro

.net core 项目+jenkins+git+docker实现自动化部署

一.准备环境 1.1 运行环境Linxu系统 CentOS7.5[腾讯云] 1.2 安装Docker https://www.cnblogs.com/bob-zb/p/12401407.html 1.3 在Docker中安装jenkins https://www.cnblogs.com/bob-zb/p/12402368.html 1.4 准备git仓库,本人使用的是码云 二.创建.net core 项目 创建成功后会自动生成Dockerfile 文件,未对Dockerfile 做任何修改,然后

jenkins+git实现docker持续部署

jenkins所做的事情很简单,就拿我现在的情况来说吧,(1).每次开发完成,我都会push到我的远程仓库:(2).我再将我push到远程仓库的代码pull到我的测试服务器上:(3).在测试服务器上,我要重启下我的项目:(4).我再执行我的shell的测试脚本将代码打包放到tomcat/webapps下面:(5).最后去看我的脚本执行情况,得到结果每次都是这样的一个重复步骤,这还是自己开发,自己测试的情况,如果是别人开发,那别人push后还得发邮件告诉我,我这边可以测试了.耽误的时间现在jenk

Docker环境搭建Jenkins+gitlab+maven自动打包 部署容器

宿主机安装docker(省略) 宿主机安装maven 下载二进制包解压到/var/docker_data/jenkins/jenkins_home下面 https://maven.apache.org/download.cgi Jenkins镜像安装 下载Jenkins镜像(一般都是Ubuntu版) FROM jenkins USER root #清除了基础镜像设置的源,切换成腾讯云的jessie源 #使用非腾讯云环境的需要将 tencentyun 改为 aliyun RUN echo '' >

MAC上搭建Jenkins + Android + IOS自动开发部署环境

因为MAC是大小写不敏感的操作系统,很多Linux命令不支持,所以首先要创建大小写敏感的操作系统. 设置静态IP 打开"System Preferences..." 点击"Network" 设置静态IP 设置Terminal 在"Utilities"中找到Terminal,点击"Terminal" 右击Terminal图标,选择"Options" -> "Keep in Dock"

windows环境下jenkins+gradle+Android 自动打包部署

第一步,搭建jenkins环境 1.安装下载jenkins jenkins运行依赖Java开发环境,安装jenkins前,先安装好JDK,并配置好环境变量 进入jenkins 的官网 https://jenkins.io/ , 根据搭建平台的不同下载,我使用的是 windows 平台 2.配置 Jenkins 安装完成后,在浏览器中访问 : http://localhost:8080/, 你将会看到如下界面 ,然后开始配置 Jenkins. 3.Jenkins 插件安装和超级管理员配置 填写完密

Jenkins+git+maven 打包构建部署

jenkins实现项目自动部署

背景 整体思路 实现方式 1 自动化部署脚本 2 远程执行 3 配置jenkins任务 背景 之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也没太搞清楚该怎么用,所以一直就只用了gitlab来做代码管理.最近要做一个项目自动部署的功能,使用过jenkins一定知道他的自动化功能.所以就从jenkins创建自动部署任务的方式来入手. 整体思路 jenkins可以配置触发器,当有新的提交时,触发执行相应的任务.由于jenkins和项目部署不在