Gitlab Jenkins WebHook 持续集成配置踩坑记

Jenkins相关介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.

目的

配置Gitlab与Jenkins,达到当Gltlab中Push代码时,Jenkins能够自动从Gitlab代码库同步代码的最新版本,并且自动构建。

前提

安装Gitlab Plugin、Gitlab Hook Plugin等Gitlab相关Plugins。

方法步骤

1.Jenkins中,选择想要配置持续集成的项目,进入项目配置,勾选“触发远程构建”、“Build when a change is pushed to GitLab. GitLab CI Service URL”两个选项,并配置“身份验证令牌”

1
openssl rand -hex 12

两个选项分别提供了两种触发方式来持续集成。前者适用范围更广,后者仅适用于Gitlab。

image

本文将分别讲解两者的使用方法与坑。

触发远程构建(更通用,多坑)

2.1 打开对应Gitlab项目仓库配置,Settings-Integrations配置持续集成相关选项。
image

URL则填写Jenkins配置中“触发远程构建(例如,使用脚本)”选项中所提示的URL结构组合填写,Secret Token不填写

1
JENKINS_URL/job/hostconf/build?token=TOKEN_NAME

勾选相应的Trigger,然后Save 保存配置即可。

还可以Test一下,如果返回200、201,则为配置成功。

Build When a change is Pushed to gitlab(仅限Gitlab,少坑)

3.1在Jenkins中勾选Build when a change is pushed to GitLab. GitLab CI Service之后,将URL填写到Gitlab项目的settings-Integrations中的URL,保存后进行test,如果返回20x,则测试通过。

采坑记录

第一种方法

返回403 Crumb XXX

image

去掉“防止跨站点请求伪造”前的勾,就可以解决

返回403 Auth相关信息,提示用户Anonymous Users 没有Build等相关权限

这样的情况是Jenkins设置了权限限制,匿名用户权限不足,此时需要登录,在Gitlab的设置中URL填写为以下格式,带上用户名和密码即可

1
https://foo:[email protected]/github-webhook/build?token=

带上明文密码太危险了?Jenkins为每个用户提供了Api Token。前往Jenkins-系统管理-管理用户,选取你的用户,会看到

image

点击“show Api Token” 即可看到用户的用户名和对应的apiToken

image

因此在Gitlab中的持续集成URL可以如此配置

1
https://username:[email protected]/github-webhook/build?token=

即可免去明文密码带来的危险性。

第二种方法(Gitlab专用)

填写好Gitlab专用链接之后依然403 提示Anonymous Users没有build权限等

在Jenkins-系统管理-系统设置中:

image

去掉Enable authentication for ‘/project’ end-point的勾子,即不对Gitlab专用Webhook链接的/project进行权限验证,即可进行正常持续集成。

总结

Jenkins提供了两种方法来实现Gitlab的持续集成,前者生成了通用url,任何程序、脚本都可以调用。但如果Jenkins需要认证,则必须在url 中提供认证信息。

第二种Gitlab专用链接,配置较为简单,注意一下相关设置即可正常使用。

相关链接

http://www.360doc.com/content/18/0503/16/10072361_750826096.shtml

https://stackoverflow.com/questions/7427557/jenkins-and-github-webhook-http-403

猜你喜欢

转载自www.cnblogs.com/xiaoerli520/p/9624319.html