利用gitlab的webhook触发jenkins

因为想解放人工,实现代码push完后jenkins自动部署代码,代码仓库用的是gitlab,首先想到当然是,gitlab通过webhook去通知jenkins部署代码。在网上找文档,发现大多数都是粘贴复制而且质量参差不齐,爬坑不少

 

前期准备

  1. 安装部署jenkins(参考Jenkins官方文档
  2. 安装部署gitlab(参考gitlab官方文档

配置jenkins

  1. 安装插件
    去jenkins系统管理下的插件管理,在线安装Gitlab Hook Plugin和Gitlab Plugin这两个插件,然后叫重启jenkins

     

  1. 系统配置
    安装完插件后,去jenkins的系统管理下的系统设置,设置好Gitlab的参数,并测试时候能连接上Gitlab

     

 

API token可以在gitlab中的用户的设置中找到

  1. 新建任务

     

     

     

    这里要提醒下,jenkins所在的服务器的jenkins用户(注意是jenkins用户,而不是root)要设置好ssh公私钥免密登录,这就需要为jenkins生成公私钥,并ssh-copy-id到代码部署服务器和gitlab服务器

     

后面的URL可以copy下来,后面会用到

 

 

这里记得需要选择Filter branches by name并且填上分支名,选择这个可以做到,如果改分支有push事件,就会触发这个job的构建。如果选择Allow all branches to trigger this job,则所有分支的push事件都会触发这个job的构建,显然这个并不是很合理。

最后配置好构建步骤直接保存

配置gitlab

点击你要配置的项目,进入设置

 

在链接那里输入之前jenkins上提供的webhook url,编辑完后保存,点击测试,如果返回200,那就成功了,去jenkins看看有没有自动构建的记录。
第二种链接URL格式是http://<jenkisn的IP地址和端口>/gitlab/build_now/<jenkins的job名称>,例如jenkins的IP地址为192.168.4.1:8080,job名称是job,那么该URL为http://192.168.4.1:8080/gitlab/build_now/job1

在这一步我遇到了两个问题

  • 测试失败返回404,Hook execution failed: execution expired
    后来查看文档,得知原因是如果jenkins是通过调度器去分发请求来访问的或者是利用iptables去转发的话都会出现这种问题,解决方法是直接把webhook中的jenkins的ip地址改成内网jenkins的Ip地址和端口(前提是jenkins和gitlab在内网能互通)
  • 测试返回Anonymous
    解决方法是在jenkins系统管理下的系统设置中的gitlab选项的配置那里,取消Enable authentication for '/project' end-point的复选项的选中,保存就可以

     


原文链接:https://www.jianshu.com/p/2b2c204dcbe2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置GitLab webhookJenkins的集成,请按照以下步骤进行操作: 1. 打开Jenkins的管理界面,点击左侧的"系统管理"。 2. 在系统管理页面中,找到"系统设置"并点击打开。 3. 向下滚动页面,找到"GitLab"部分。 4. 在GitLab部分,找到"GitLab server"字段,点击"Add"按钮添加一个GitLab服务器。 5. 在出现的表单中,填写GitLab服务器的URL和凭证信息(用户名和访问令牌或密码),然后点击保存。 6. 返回到系统设置页面,向下滚动,找到"GitLab Connection Configuration"部分。 7. 在"Connection name"字段中,输入一个连接名称(如"GitLab")。 8. 在"Project naming strategy"字段中,选择一个适合你的命名策略。 9. 在"Webhook"部分,勾选"Enable authentication for webhook callbacks"选项以启用身份验证。 10. 在"Secret token"字段中,输入一个用于验证Webhook请求的密钥(可以是任意字符串)。 11. 点击保存。 现在你已经成功配置了GitLab webhookJenkins的集成。接下来,在GitLab中设置Webhook触发Jenkins构建: 1. 打开你的GitLab仓库页面,点击左侧的"Settings"。 2. 在Settings页面中,选择"Webhooks"选项卡。 3. 点击"Add webhook"按钮。 4. 在URL字段中,输入Jenkins服务器的URL,后面加上`/project/<jenkins项目名称>/gitlab/build_now` (例如:`http://jenkins.example.com/project/my-project/gitlab/build_now`)。 5. 在Secret Token字段中,输入之前在Jenkins中设置的密钥。 6. 选择你希望触发Webhook的事件(例如Push事件)。 7. 点击保存。 现在,当你的GitLab仓库中的相关事件发生时,GitLab会发送Webhook请求到Jenkins,并触发相应的构建操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值