使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成

业务背景

我们在开发的时候,特别是前后端分离的时候,前端需要我们后端提供的API接口,可能需要每次有一个接口的变动都需要重新部署到dev环境上,例如:最常见的Git工作流的方式,develop和master是分开的,在开发过程中提交的代码首先合并到develop上,如下图:

如果,使用Jenkins做集成工具,每次有代码合并的时候,也需要手动的去构建:

这是一件很繁琐的事情,如何实现当代码自动提交到develop分支的时候自动触发构建功能,目前,有效的解决方案是使用“钩子”。

钩子功能(callback),是帮助用户push了代码后,自动回调一个您设定的http地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。

这里就学习一下代码托管在“码云 Git@OSC”平台上,使用通用的“Generic Webhook Trigger” 插件实现。

关于“码云”WebHooks的介绍及使用请参考:http://git.mydoc.io/?t=154711

准备工作

1、这里假设你已经对Jenkins有一定的了解和使用,如果是新手的话,可以参考文章:

使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

2、“码云 Git@OSC”项目托管地址,这里假设我自己的项目:https://git.oschina.net/xuliugen/dlt-server.git(私有项目)

3、安装Generic Webhook Trigger插件

在“系统设置–插件管理–可选插件”界面搜索:Generic Webhook Trigger,可以看到,点击安装,然后重启。

这里是我已经装过,所以在“已安装”界面给大家看一下!

插件地址:https://wiki.jenkins-ci.org/display/JENKINS/Generic+Webhook+Trigger+Plugin

搭建工作

一、创建Job

这里我的是Maven项目,所以直接使用下图中红色步骤1和2

二、配置Job

下边依次配置是:General–>源码管理–>构建触发器–>Optional filter–>构建环境–>Pre Steps–>Build–>Post Steps–>构建设置–>构建后操作 的配置。

(1)General

(2)源码管理

注意:这里指定 Build的分支为develop,只是为了在开发的时候部署开发的代码,如果没有直接就是master

关于账户密码的设置,如有问题请参考:

使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

(3)构建触发器

直接勾选使用插件即可!

(4)Optional filter、构建环境、Pre Steps这三个部分没有进行配置,如下:

(5)Build、Post Steps、E-mail Notification

a、指定根pom文件; b、这里由于我的项目是多环境的,如下:

我需要编译的是dev环境并且跳过测试 ,所以填入命令:

clean install -Pdev -Dmaven.test.skip=true -e

如果没有环境配置的话,直接忽略就可以!

c、选中:Run only if build succeeds

(6)构建后操作

我这里是部署到Tomcat容器中,关于过程不再多说,可以参考:

使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

(7)点击Apply 保存,到此Job配置完成!

三、配置用户和Security

(1)在“系统管理–用户管理”设置用户API Token!找到等会会用!

可以进行Change!

(2)然后在“系统设置->Configure Global Security”,去掉防止跨站点请求伪造的勾,这样我们就可以在浏览器和码云的webhook访问到api的地址了,不然我们把用户名和密码放到url 中,还是不能访问。

四、配置码云WebHooks

找到WebHooks配置界面,在POST地址框中输入如下格式内容:

具体如下:

a、User ID:既是“三(1)”中的User ID,我的是admin; b、API Token:既是“三(1)”中的API Token,例如我的是8c1d11114ab111111111fdf21111a6a97; c、Jenkins IP地址:就是你的Jenkins的服务器IP地址,这个必须是公网IP地址,例如我的是210.41.223.54; d、端口:就是Jenkins服务器的端口; e、后边的内容就是Generic Webhook Trigger 插件的地址,无需改变;

例如我的配置为:

点击提交之后,界面如下:

然后点击“测试” 看一下Jenkins是否开始运行!

至此!全部配置已经完成,如有疑问欢迎留言!共同学习!

原文发布于微信公众号 - Java后端技术(JavaITWork)

原文发表时间:2017-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算

如何在Linux,Mac或Windows上安装Git

Git是由Linus Torvalds为Linux内核设计开发的。Git为非线性的分布式开发提供了支持,允许多个项目成员同时在一个项目上进行开发。Git是最流行...

1892
来自专栏咖啡的代码人生

IntelliJ IDEA 使用JSTL标签库(IDEA 加载 tld文件)

这两天在 IntelliJ IDEA 中 使用 C标签(JSTL)的时候发现引入进来有问题,不但没提示而且还有红色警告,所以经过一番谷歌的查找之后解决了这个问...

5444
来自专栏实用工具入门教程

如何部署 Bacula Server

Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

2643
来自专栏Petrichor的专栏

pycharm: 配置远程repo

882
来自专栏用户2442861的专栏

MyBatis学习总结(三)——优化MyBatis配置文件中的配置

  之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下:

871
来自专栏Java大联盟

SpringBoot教程(2):静态化

1983
来自专栏猿天地

Spring Boot中整合Sharding-JDBC读写分离示例

在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。

3163
来自专栏云计算教程系列

如何在CentOS 7上安装Bacula Server

Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

4863
来自专栏Java技术分享

持久化persistence.xml配置文件

 在EJB中,一个实体Bean应用由实体类和persistence.xml文件文件组成。persistence.xml文件在jar文件的META-INF目录下...

2298
来自专栏wblearn

redis集群报错Node is not empty

继上一篇redis3.0.x集群搭建完成之后,当然要用客户端JedisCluster简单测试一下集群啦,这样就要将redis.conf里bind 127.0.0...

881

扫码关注云+社区