每次代码push后,还要去手动点jenkins构建,感觉这一步挺多余的,想省掉这一步。google了下,有很多种方式,这次采用gitlab的webhook来触发jenkins,实现自动构建。

版本

系统 centos 6.5
gitlab-8.2.3 及以上
jenkins 2.9 及以上
jenkins插件:
gitlab-plugin 1.4.5及以上。这个插件注意下,如果使用的是低版本的,可能会导致后面的配置中看不到 Build when a change 选项

步骤

1.jenkins安装gitlab-hook-plugin插件

访问https://wiki.jenkins-ci.org/display/JENKINS/Gitlab+Hook+Plugin,下载最新版本,进入到jenkins的系统管理->插件->高级,选择上传插件。点击上传后,jenkins会自动安装,安装完成后,重启下jenkins

2.配置jenkins


打开要自动构建的jenkins项目,找到构建触发器,勾选Build when a change is pushed to GitLab. GitLab CI Service,并记录下后面的url地址。

这里有个选项Accept merge request on success,它的作用是用来筛选分支,比如同一个项目中有多个分支,可能只想自动构建其中的一个,这时就可以通过它匹配,默认是构建所有的分支。

如果是新版本的jenkins,比如2.138.1,需要对权限进行设置,否则gitlab会收到403错误,无法触发构建。
第一种方式是开启匿名用户读取的权限:
点击系统管理->全局安全配置->勾选 匿名用户具有可读权限

如果jenkins是暴露在公网的话,这种方式不安全,推荐用第二种方法Secret token。
在jenkins项目的Build when a change is pushed to GitLab.配置中,选择高级,找到Secret token,点击Generate,将生成的token记录下来,之后配置webhook时会用到。

3.配置gitlab

进入gitlab项目管理界面,选择webhook,在url中输入刚才在jenkins配置界面复制那一个url,点击ADD WEB HOOK,之后再点击TEST HOOK,如果看到jenkins中有自动出现一个构建事件,即是配置成功了。
gitlab的版本迭代很快,界面也经常变,不管如何变,都是找到WEB HOOK的设置界面进行设置即可。以下界面仅供参考。

如果jenkins的项目中配置了Secret token,并且webhook的配置界面中有Secret Token的选项,则可以将刚才生成的token填入Secret Token中,保存配置即可。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐