环境准备
本次演示的操作系统环境为 CentOS 7,涉及三台服务器,角色与IP分配如下:
- Gitea 服务器(代码仓库):
192.168.41.84
- Jenkins 服务器(自动化部署):
192.168.41.81
- Nginx 服务器(测试环境):
192.168.41.83
各服务的部署过程可参考相关文章,本文将重点讲解 Gitea 与 Jenkins 通过 Webhook 实现自动化构建的联动配置。
创建 Gitea 代码仓库
为了直观展示效果,我们创建一个简单的 HTML 静态页面项目。创建过程此处不再赘述,以下是一个已创建完成的仓库界面。

创建 Jenkins 任务
在 Jenkins 中创建一个新任务(例如自由风格的软件项目),关键配置步骤如下。
1. 源码管理配置
在“源码管理”部分选择 Git,填入 Gitea 项目的仓库地址(HTTP/SSH),并配置访问凭证(用户名/密码方式)。

2. 构建触发器配置
这是实现自动构建的核心。勾选“触发远程构建(例如,使用脚本)”,并设置一个身份验证令牌(例如 jenkinsopsdev)。

配置成功后,界面会给出一个用于远程触发的 URL 模板:
JENKINS_URL/job/html_demo/build?token=TOKEN_NAME
请将 JENKINS_URL 替换为你 Jenkins 服务器的实际地址(IP或域名),TOKEN_NAME 替换为你刚刚设置的令牌字符串。将这个完整的 URL 记录下来,下一步在 Gitea 中会用到。
配置 Gitea 的 Webhook
现在,我们需要在 Gitea 仓库中设置 Webhook,使其在代码推送时自动调用 Jenkins 的触发 URL。
1. 进入 Webhook 管理界面
在 Gitea 项目仓库中,依次点击“设置” -> “Web 钩子”。

2. 添加新的 Webhook
点击“添加 Web 钩子”按钮,在表单中填入从 Jenkins 获取的触发 URL,HTTP 方法选择 GET,触发条件选择“推送事件”。


配置完成后,可以点击“测试推送”按钮进行验证。如果配置正确,Gitea 会显示推送成功的状态码(如 201)。

此时,返回 Jenkins 界面,你会看到已经触发了一次新的构建任务。

至此,一个基础的 Gitea + Jenkins Webhook 自动化部署流程就配置完成了。后续每次向该 Gitea 仓库的特定分支推送代码,都会自动触发 Jenkins 执行构建任务。
疑难问题解决
在实际配置过程中,你可能会遇到一些错误。以下是两个常见问题的解决方法。
问题一:Gitea Webhook 调用被拒绝
在 Gitea 中测试推送时,可能会遇到如下错误:
Delivery: Post "http://10.147.17.157:8081/job/html_demo/build?token=jenkinsopsdev": dial tcp 10.147.17.157:8081: webhook can only call allowed HTTP servers

解决方法:
此错误是因为 Gitea 默认出于安全考虑,限制了 Webhook 可以调用的主机。需要修改 Gitea 的配置文件 /data/gitea/conf/app.ini,在 [webhook] 部分添加允许访问的 Jenkins 服务器 IP。
[webhook]
ALLOWED_HOST_LIST = 10.147.17.157
请将 10.147.17.157 替换为你 Jenkins 服务器的真实 IP。修改后,重启 Gitea 服务使配置生效。
问题二:测试推送时报 403 认证错误
如果测试时返回 HTTP 403 状态码,提示 “Authentication required”。

解决方法:
这是因为 Jenkins 的匿名用户没有触发构建的权限。需要登录 Jenkins,进入 系统管理 -> 全局安全配置。
在“授权策略”设置区域,找到并勾选 “匿名用户具有可读权限” 选项,然后保存配置。

完成此配置后,Gitea 的 Webhook(作为匿名请求)就能成功触发 Jenkins 构建了。当然,在生产环境中,建议配置更安全的认证方式,如使用 Jenkins 的 API Token。
希望这篇基于 CentOS 7 的 Gitea 与 Jenkins 集成指南能帮助你快速搭建自动化构建流水线。如果你在实践过程中遇到其他问题,欢迎在云栈社区与更多开发者交流探讨。