之前搭建过 Gitlab,但是就只是搭建而已,并未实际使用,因为我大部分的代码还是存放在 Github 上。
并且大部分项目都是在 Vercel 上运行的(Vercel 是真好用),但是最近国内访问 vercel 情况不容乐观,貌似被墙了呜呜。然后 Gitlab 的资源占用非常严重,几乎占用了一半的服务器性能,可 点我 查看运行状态。与此同时,随着很多私有项目越来越多,使用 git 私有仓库以及 Vercel 部署,肯定不如自建私有 git 服务和自有服务器部署使用体验来好。
于是就想搭建一个轻量级仓库,同时支持 CI/CD。经过一番的调研,决定使用 Gitea 和 Drone 作为解决方案。
Gitea
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证.
你可以在 横向对比 Gitea 与其它 Git 托管工具 查看 gitea 与其他 git 工具的优势与缺陷。
安装
这里我选用 Docker 进行安装,安装文档可在官方文档中查看其他安装方式
version: '3'
networks:
gitea:
external: false
volumes:
gitea:
driver: local
services:
server:
image: gitea/gitea:1.17.1
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '10800:3000'
- '2221:22'
根据自身需求配置 docker-compose.yml 内容。运行 docker-compose up
等待部署
服务器防火墙与云服务安全组都需要开放端口才可访问,服务器ip:10800
,将会出现如下界面
因为修改配置相对比较麻烦,所以在首次安装的时候,请根据实际需求进行配置安装。
修改配置
假设要修改其中的配置的话,gitea 的后台管理面板是无法直接修改的。需要到 /data/gitea/conf/app.ini
中修改,具体修改的配置 参阅 自定义 Gitea 配置 - Docs
迁移仓库
从其他第三方 git 仓库迁移到 gitea,可以访问https://git.kuizuo.cn/repo/migrate 来迁移仓库
稍等片刻,取决于访问 github 仓库的速度。有可能还会迁移失败,就像下面这样。
所以可以申请访问令牌(Access Token),在 New Personal Access Token 处创建。迁移成功后 ,如下图所示
镜像仓库
很大部分时间,gitea 只能作为我的副仓库,或者说 github 的镜像仓库。
gitea 也提供镜像仓库的方案,官方文档Repository Mirror
Drone
由于 Gitea 并没有内置 CI/CD(持续集成/持续部署) 的解决方案,所以需要配置第三方的,这里推荐使用 Drone CI。
Drone 是面向繁忙开发团队的自助服务持续集成平台。相对于常见的 Jenkins,选中 Drone 的原因在于它非常简洁,不像 Jenkins 那样复杂,同时它拥有可以满足基本需求的能力,并且提供了许多实用的插件,如 GitHub,Email,微信,钉钉等
安装
由于我们使用了 gitea,所以 drone 中选择 gitea 来安装,这是官方文档 Gitea | Drone,照着操作即可。
需要安装 Server 和 Runner,一个是 Drone 的服务,另一个用于检测 Git 记录,以重新构建项目。