前言
Gitea 是一个用于代码托管的轻量级单体程序,它能与现有的经典应用集成,诸如代码分析工具 SonarQube、持续集成工具 Drone、Jenkins 以及用于工单管理的客户端插件(VSCode、Jenkins IDE)。 不久之后,Gitea 也将迎来自身集成的一体化 CI/CD 功能。
今天要介绍的是 Gitea 与 Jenkins CI/CD 的集成。
关于 Jenkins
Jenkins 是一款开源的、提供友好操作界面的持续集成(CI)工具,在国内外都有众多的使用者。Jenkins 具有以下优点:
- 界面友好
- 插件丰富
- 可编程的 API
- 历史悠久、社区活跃
因此 Jenkins 也被众多的企业或者组织用来构建自己的 CI/CD 系统。
然而,Jenkins 本身并不具备源代码管理的能力,对于一个完整的 CI/CD 系统来讲,必须要从源代码管理系统开始。所以,本文将介绍如何利用 Gitea 和 Jenkins 来构建一个完整的 CI/CD 系统。
关于 Jenkins 的 Gitea 插件
Jenkins 支持从通用 Git 服务器拉取代码,无需安装额外的插件即可配合 Gitea 使用。用于 Jenkins 的 Gitea 插件作用在于将 Jenkins CI/CD 权限直接赋予 Gitea 服务器上被授权的组织或个人,用户无需单独为每一个仓库配置 Jenkins 触发器即可享受 CI/CD 功能。
当用户在仓库中创建 Jenkinsfile
时,Jenkins 能够自动扫描到该仓库并启动 CI/CD 流水线。
插件详情:https://plugins.jenkins.io/gitea/
流程概览
本次集成实践主要包含以下内容
- Gitea Plugin 插件的介绍和配置
- Gitea + Jenkins 的 CI/CD 环境搭建
- 利用 Gitea 的 Webhook 功能,从 Gitea 侧触发 Jenkins Pipeline
Gitea
- 在 Gitea 注册用户 Jenkins,同时为用户 Jenkins 添加 API Access Token,用于 Jenkins 从 Gitea 拉取代码
- 在 Gitea 中创建组织 GiteaTeam,并且将 Jenkins 用户添加为组织管理员
- 在 GiteaTeam 组织中创建代码仓库 JenkinsExample
- 修改 Gitea 服务器的 Webhook 设置
Jenkins
- 登录 Jenkins 管理面板,安装插件:Gitea
- 打开 Manage Credentials 添加 Gitea 访问令牌,用于从 Gitea 拉取代码、通过 API 安装 Webhook
- 打开 Configure System 配置 Gitea Server 插件,填写 Gitea 服务器地址和 Mange Hooks 令牌(选用上一步填写的 Credentials)
- 集成演示 JenkinsExample
Gitea + Jenkins 的 Docker Compose 配置示例
如果您还没有搭建以上环境,我们提供了一个 docker-compose.yml
模板帮助您快速启动,模板内容附在本文最后。