gitea如何集成驱动jenkins

📅 2026/7/9 11:42:30 👁️ 阅读次数 📝 编程学习
gitea如何集成驱动jenkins

集成 Gitea 和 Jenkins 最推荐的方式是使用Gitea Plugin,它能让 Jenkins 自动识别 Gitea 上的仓库,并通过 Webhook 实现代码推送即触发构建。

配置过程主要分为两大步:先让 Jenkins 认识 Gitea,再设置好触发方式。

🛠️ 第一步:在 Jenkins 中配置 Gitea 插件

  1. 安装插件:在 Jenkins 的“插件管理”中,搜索并安装Gitea Plugin,然后重启 Jenkins 生效。

  2. 配置 Gitea 服务器:进入“系统管理” -> “系统配置”,找到“Gitea Servers”区域,添加你的 Gitea 服务器信息:

    • Name:给服务器起个名字。

    • URL:你的 Gitea 实例地址(例如https://gitea.your-company.com)。

    • Credentials:点击“添加”,选择“Gitea Personal Access Token”,填入你从 Gitea 用户设置中生成的 API Token。为了能自动管理 Webhook,记得勾选“Manage hooks”。

  3. 创建并配置任务

    • 新建任务:在 Jenkins 首页点击“新建任务”。

    • 选择任务类型:推荐选择Organization Folder,它会自动扫描你 Gitea 组织或用户下的所有仓库,并为包含Jenkinsfile的仓库自动创建流水线。当然,你也可以选择创建单独的Multibranch PipelineFreestyle项目。

    • 配置源码:在任务的“Repository Sources”中,添加一个 Gitea 源。选择你刚配置的 Gitea 服务器和 Credentials,并在“Owner”字段填写你要集成的 Gitea 组织或用户名。

🔗 第二步:设置 Webhook 实现自动触发

这一步是让 Gitea 在代码变动时“通知”Jenkins。

  • 推荐方式(自动):如果你在配置 Gitea 服务器时勾选了“Manage hooks”,Jenkins 在扫描或首次构建后会自动为你在 Gitea 的对应仓库中创建所需的 Webhook,不需要你手动干预。

  • 备选方式(手动):你也可以手动在 Gitea 仓库的“设置” -> “Webhook”中添加:

    • Payload URL:填写http://<你的Jenkins地址>/gitea-webhook/post

    • Content Type:选择application/json

    • 触发事件:勾选你希望触发构建的事件,如“推送事件”。

💡 进阶技巧与排坑

  • 在流水线中使用 Token:如果你的流水线需要拉取私有仓库,可以在 Pipeline 脚本中使用withCredentials步骤安全地引用你的 Gitea Personal Access Token。

  • 显示构建状态:可以安装Gitea Checks Plugin,它能让 Jenkins 把每次构建的状态(成功/失败)直接显示在 Gitea 的 Pull Request 或 Commit 页面上,方便团队协作。

  • 常见错误

    • 403 错误:检查用于集成的 Jenkins 用户在 Gitea 仓库中是否拥有写(Write)权限,以便能正确提交构建状态。

    • CSRF 保护:如果 Webhook 因为 CSRF 问题被拒绝,可以尝试在 Jenkins 启动参数中添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true,但这不推荐用于生产环境。更好的方式是确保插件为最新版。

没有Gitea Plugin也不影响集成。核心思路是:让 Gitea 在代码变动时,通过 Webhook 给 Jenkins 发个“通知”,Jenkins 收到后按既定流程工作就行。这里有几种替代方案,你可以根据情况选择。

⚙️ 方案一:使用 Generic Webhook Trigger 插件(最推荐)

这是最灵活通用的办法,通过 Jenkins 的Generic Webhook Trigger Plugin来接收和处理 Gitea 的 Webhook 请求。

  1. 在 Jenkins 中:安装Generic Webhook Trigger插件。在项目的“构建触发器”中,勾选“Generic Webhook Trigger”,定义一个你喜欢的 Token(比如my-token),并可以解析 Gitea Webhook 传递的 JSON 数据作为构建参数。

  2. 在 Gitea 中:在仓库的“设置” -> “Webhook”里添加一个 Webhook。

    • Payload URL:填入http://<你的Jenkins地址>/generic-webhook-trigger/invoke?token=my-token

    • Content Type:选择application/json

    • 触发事件:勾选你需要的,比如“推送事件”。

  3. 在 Jenkins Pipeline 中:用pipeline脚本定义你的构建、测试、部署流程。

🔌 方案二:用 Gitea API 写个“胶水”脚本

如果不想依赖额外插件,可以自己写个轻量脚本(比如用 Shell 或 Python)来充当桥梁。

  1. 获取 Token:在 Gitea 用户设置里生成一个 Personal Access Token,用于后续 API 调用。

  2. 编写脚本:脚本需要完成两件事:

    • 通过 Gitea API 检测代码库的变动(或者监听 Webhook)。

    • 一旦检测到变动,就调用 Jenkins API 来触发对应的构建任务。

    • 有用户在 Gitea 官方论坛分享过类似的实现思路,但这种方式更偏定制化,需要一定的开发量。

💡 方案三:换个思路,试试 Gitea Actions

如果你的 Gitea 版本在1.19 及以上,其实可以考虑直接用 Gitea 内置的Gitea Actions来做 CI/CD。它能帮你省掉 Jenkins 这一整台服务器的开销和运维成本

  • 轻量且集成:Gitea Actions 是原生集成的,资源占用极低(Runner 容器内存占用约200MB),相比之下 Jenkins 实例通常需要1GB以上内存。

  • 配置简单:只需要在仓库根目录的.gitea/workflows/*.yml文件中定义流程即可,语法和 GitHub Actions 高度相似,学习成本很低。

⚠️ 补充说明:Gitea Plugin 的现状

Jenkins 官方插件库中其实是有Gitea Plugin的,它专门用于和 Gitea 深度集成,可以自动管理 Webhook、提交构建状态等。

根据社区用户的反馈,这个插件在与“Organization Folder”类型任务配合时表现更好,如果你想为单个仓库配置 Pipeline,可能会遇到一些不便,需要额外配置或寻找替代方案(比如用通用 Webhook 触发插件)。这可能是你“找不到”它的一个原因,但这不影响我们用更通用的方式来实现集成。

所以,如果你的需求是快速搞定自动触发,方案一(Generic Webhook Trigger)是最推荐的通用做法。如果想更轻量、减少外部依赖,可以试试方案三(Gitea Actions)