Gitea 是一款极易搭建的自助 Git 服务,最初是fork子Gogs项目(Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务)。Gitea使用 Go 语言开发。使用 Go 语言开发使得 Gitea 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
Gitea占用资源小,比起Gitlab这种庞然大物来说简直是精致得要命。但是作为小团队的项目管理用来替代Gitlab还是基本能够满足需求的。而且Gitea(包括Gogs)社区还是挺活跃的,新功能也在逐渐增加中,个人很看好它的前景。
1. 怎么运行Gitea
1.1 使用Docker运行mysql
1version: '2'
2services:
3 mysql:
4 image: mysql:5.7.18
5 volumes:
6 - /opt/docker/gitbox/db:/var/lib/mysql
7 - /opt/docker/gitbox/config:/etc/mysql/conf.d
8 environment:
9 - TZ=Asia/Shanghai
10 - MYSQL_ROOT_PASSWORD=password
11 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
12 ports:
13 - 3307:3306
14 hostname: mysql
15 restart: unless-stopped
Gitea支持MySQL、PostgreSQL或SQlite,上面是以MySQL为例。也可以安装其他数据库。
1.2 创建数据库
使用上面创建的root用户登录mysql,创建数据库:
1DROP DATABASE IF EXISTS gogs;
2CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
1.3 安装Gitea
1version: '2'
2services:
3 gogs:
4 image: gitea/gitea:1.4.0-rc2
5 volumes:
6 - /etc/localtime:/etc/localtime
7 - /opt/docker/gogs/data:/data
8 - /opt/docker/gogs/logs:/app/gogs/log
9 ports:
10 - "10080:3000"
11 - "10022:22"
12 hostname: gogs
通过volume配置,可以将log以及repository等数据保存到宿主机上。
1.4 配置
使用浏览器访问,会自动跳入设置界面。配置好数据库,做好必要的配置Gogs就安装好了。
2. Webhook的使用
到现在为止,我还不会使用Jenkins中的Gitea plugin,所以最终还是使用了Gogs的plugin。
2.1 Jenkins中安装插件
Gogs plugin。安装这个插件之后就可以使用Gogs类型的Webhook了。
2.2 项目配置
在Jenkins中针对要启用Webhook的项目选择"Use Gogs Secret",设置一个Secret。这个Secret将保证通讯中的数据安全。
2.3 Gitea中配置
在Gitea中仓库设置 -> 管理Web钩子,选择添加一个Gogs类型的Webhook,其他参数如下:
- 推送地址为:{jenkins-server-address}/gogs-webhook/?job={job name}
- 数据格式为:application/json
- 密钥文本设置为上面的Secret。
- 希望触发Web钩子的事件:只推送即可。
经过以上配置之后,当推送了最新代码的时候,会自动触发Jenkins中的构建事件,对代码进行打包测试。