需求:想实现当研发人员往gitlab仓库提交代码后自动触发Jenkins中对应JOB的构建。
方案一:通过jenkins自带的“触发远程构建”方式,具体配置:
1.配置JOB
2.配置gitlab项目的webhook
点击测试报404错误,如下图:
问题排查:
通过日志发现并没有请求过来,判定可能是权限问题,但不知道为什么是报404而不是报30X权限相关错误,抱着测试的态度尝试居然问题解决了。
解决方法:
获取用户API Token,在webhook中附带用户名和token,格式如下:其中id和token可以在jenkins用户设置页面查看和生成。
http://id:token@jenkins_url/job/myJobName/build?token=my_job_token
如图
当然也可以赋予匿名用户读取和执行的权限,但考虑安全不推荐这样做。
方案二:推荐使用 Generic Webhook Trigger插件,功能更强大,配置方法类似。
可以通过id:token方式,配置如方案一,也可以通过自定义token方式,但要注意token要确保唯一,如果不唯一它会触发相同token的所有项目,比如用项目名称。下面介绍后面的配置方式:
1.jenkins job配置
2.gitlab webhook配置
方案三:推荐使用gitlab插件
This plugin allows GitLab to trigger Jenkins builds and display their results in the GitLab UI.
提出方案三是基于方案一和方案二都会设计到jenkins用户id:token等敏感信息。
配置方法如下:(如不需要将构建结果回写到gitlab ui上则无需配置“系统管理”里面的gitlab信息
1.jenkins中的job只需要勾选,只有安装了gitlab插件才会又下面这个选项
2.在gitlab的webhook处