1.功能说明
Github Webhook可以触发Jenkins自动构建,通过配置Github Webhook,每次代码变更之后(例如push
操作),Webhook会自动通知Jenkins服务器,Jenkins会自动执行预定义的构建任务(如Jenkins pipeline),这样的话开发者就不需要手动操作Jenkins了,Webhooks直接触发构建,提高开发流程的效率和自动化
2.前提条件
- Jenkins已安装并完成初始化操作
- 安装了所需的Jenkins插件:
GitHub plugin
(初始化时选择安装推荐插件会自动安装该插件) - Jenkins的pipeline相关配置:触发器构建中勾选:
GitHub hook trigger for GITScm polling
3.配置过程
3.1 关闭CSRF防护
Jenkins 默认启用了 CSRF 保护,可能导致 Webhook 请求被拒绝,导致Webhook配置报错:
Last delivery was not successful. Invalid HTTP Response: 403
即GitHub没有适当的访问权限
可以通过添加适当的JVM参数来关闭该权限:
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
可以在/usr/bin/jenkins
(启动脚本)中添加该参数,也可以手动启动Jenkins:
java -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -jar /usr/share/java/jenkins.war
启动之后可以在Security
中看到CSRF已经关闭:
注意:不要尝试从config.xml
中修改参数来关闭CSRF,启动Jenkins会默认修复你修改的配置
3.2 Github Webhook配置
进入repository -> settings
,找到Webhook
,开始进行配置,有关如何配置在GitHub Plugin的文档中有详细说明:https://plugins.jenkins.io/github/
- 填写
Payload URL
- 修改
Content type
为json
格式 - 勾选
push
触发即可 - 其余保持默认
点击update webhook
,如下图所示则配置成功: