本文不再描述gitlab和Jenkins的搭建方法。
Git提交代码至gitlab后触发Jenkins构建的配置方法
1. 确保jenkins服务器可以克隆gitlab的代码
该步的作用为验证gitlab的ssh key已正确配置,代码push和clone操作正常。
2. 安装Git和Gitlab插件
在Jenkins首页点击Manage Jenkins --> Manage Plugins,切换至Available plugins,确保安装Git Plugin、Gitlab Plugin和Generic Webhook Trigger Plugin并启用。
3. 配置Gitlab插件
3.1 打开Gitlab,点击Preference settings --> personal access tokens(访问令牌)
此步如果没有Private token需要先添加一个。
【注】此处生成后需及时复制生成的Private token,过后将无法访问。
3.2 打开Jenkins,点击Manage Jenkins --> Configure System,配置Gitlab选项
设置完成后,测试是否连接成功,点击Test Connection,返回success则成功。
之后点击页面底部的应用,再点击保存。
3.3 配置git插件
同3.2,切换至Git Plugin
点击底部的应用,再点击保存。
4. 配置Jenkins item
4.1 选择Freestyle project
点击确定,之后点击项目进入项目配置。
4.2 项目配置
4.2.1 选择Build when a change is pushed to Gitlab webhook URL,此处只选择了Push Events。
4.2.2 勾选comments,点击高级。
4.2.3 勾选Set build description to build cause(eg. Merge request or Git push)。Allowed branches可以配置指定分支,此处选择所有分支都可触发。
4.2.4 点击generate生成一个secret token,将其复制下来。
点击应用,再点击保存。至此Jenkins配置完成。
5. Gitlab配置项目钩子并绑定webhook
5.1 进入Gitlab项目设置 --> Webhook设置。
5.2 触发来源勾选推送(Push)
5.3 勾选Enable SSL verification,点击Add webhook.
【注】此时出现错误提示Url is blocked: Requests to the local network are not allowed.解决方案见问题记录1.
6. 测试webhook
可以看到,Jenkins已经自动获取到webhook的通知请求,并执行了构建。
查看项目控制台,可以看到如下信息:
问题记录
1. gitlab添加webhook提示Url is blocked: Requests to the local network are not allowed
解决方法: 进入管理中心 --> 设置 --> 网络,点击出站请求(Outbound requests)
勾选Allow requests to the local network from web hooks and services(允许来自web hooks和服务对本地网络的请求),点击保存修改。
之后回到webhook的设置界面,重复步骤5即可。
2. 同一台服务器上gitlab和Jenkins的同步问题
当gitlab和Jenkins搭建在同一台服务器上时,并不需要使用ssh或http进行代码克隆。
经过实践,当正确配置git仓库和credentials的时候,无需执行git clone命令,也可将仓库中的内容同步至Jenkins工作空间下,但当前还未发现指定路径的方法。