代码管理/版本控制,自建我只选gitea
·
文章目录
一、对比 Gitea 与其它 Git 托管工具
参考:https://docs.gitea.cn/installation/comparison
这里列出了 Gitea 与其它一些 Git 托管工具之间的异同,以便确认 Gitea 是否能够满足您的需求。
请注意,此列表中的某些表项可能已经过时,因为我们并没有定期检查其它产品的功能是否有所更改。你可以前往 Github issue 来帮助我们更新过时的内容,感谢!
表格中的符号含义:
-
✓ - 支持
-
⁄ - 部分支持
-
✘ - 不支持
-
⚙️ - 由第三方服务或插件支持
1.概览
使用 Shields.io 帮助我创建一个展示以下 GitHub 仓库信息的表格,其中包括repo、releases、stars、forks、使用语言。
涉及的repo有:gitlabhq、gogs、gitea。要求如下:
每个shiedles信息都需要有相关的超链接
releases没有的话可以用tags替换

2.主要特性
| 特性 | Gitea | Gogs | GitLab CE |
|---|---|---|---|
| 开源免费 | ✓ | ✓ | ✓ |
| 低资源开销 (RAM/CPU) | ✓ | ✓ | ✘ |
| 支持多种数据库 | ✓ | ✓ | ⁄ |
| 支持多种操作系统 | ✓ | ✓ | ✘ |
| 升级简便 | ✓ | ✓ | ✓ |
| 可观测性 | ✘ | ✘ | ✓ |
| 支持第三方渲染工具 | ✓ | ✘ | ✘ |
| WebAuthn (2FA) | ✓ | ✘ | ✓ |
| 扩展 API | ✓ | ✓ | ✓ |
| 内置软件包/容器注册中心 | ✓ | ✘ | ✓ |
| 同步提交到外部仓库 (push mirror) | ✓ | ✓ | ✓ |
| 同步外部仓库的提交 (pull mirror) | ✓ | ✘ | ✓ |
| 浅色和深色主题 | ✓ | ✘ | ✓ |
| 自定义主题支持 | ✓ | ✓ | ✘ |
| 支持 Markdown | ✓ | ✓ | ✓ |
| 支持 CSV | ✓ | ✘ | ✘ |
| Git 驱动的静态 pages | [⚙️][gitea-pages-server], [⚙️][gitea-caddy-plugin] | ✘ | ✓ |
| Git 驱动的集成化 wiki | ✓ | ✓ | ✓ |
| 部署令牌 | ✓ | ✓ | ✓ |
| 仓库写权限令牌 | ✓ | ✘ | ✓ |
| RSS Feeds | ✓ | ✘ | ✘ |
| 内置 CI/CD | ✓ | ✘ | ✓ |
| 子组织:组织内的组织 | ✘ | ✘ | ✓ |
| 多实例交互 | / | ✘ | ✘ |
| Markdown绘图 | ✓ | ✘ | ✓ |
| Markdown数学公式 | ✓ | ✘ | ✓ |
3.代码管理
| 特性 | Gitea | Gogs | GitLab CE |
|---|---|---|---|
| 仓库主题描述 | ✓ | ✘ | ✓ |
| 仓库内代码搜索 | ✓ | ✘ | ✓ |
| 全局代码搜索 | ✓ | ✘ | ✘ |
| Git LFS 2.0 | ✓ | ✘ | ✓ |
| 组织里程碑 | ✘ | ✘ | ✓ |
| 细粒度用户角色 | ✓ | ✘ | ✓ |
| 提交人的身份验证 | ⁄ | ✘ | ✓ |
| GPG 签名的提交 | ✓ | ✘ | ✓ |
| SSH 签名的提交 | ✓ | ✘ | ✓ |
| 拒绝未通过验证的提交 | ✓ | ✘ | ✓ |
| 外部仓库迁移 | ✓ | ✘ | ✓ |
| 仓库活跃度页面 | ✓ | ✘ | ✓ |
| 分支管理 | ✓ | ✘ | ✓ |
| 建立新分支 | ✓ | ✘ | ✓ |
| 在线代码编辑 | ✓ | ✓ | ✓ |
| 提交的统计图表 | ✓ | ✘ | ✓ |
| 模板仓库 | ✓ | ✘ | ✘ |
| Git Blame | ✓ | ✘ | ✓ |
| 可视化镜像变化 | ✓ | ✘ | ? |
4.工单管理
| 特性 | Gitea | Gogs | GitLab CE |
|---|---|---|---|
| 工单跟踪 | ✓ | ✓ | ✓ |
| 工单模板 | ✓ | ✓ | ✓ |
| 标签 | ✓ | ✓ | ✓ |
| 时间跟踪 | ✓ | ✘ | ✓ |
| 支持多个负责人 | ✓ | ✘ | ✘ |
| 关联的工单 | ✘ | ✘ | ✓ |
| 私密工单 | ✘ | ✘ | ✓ |
| 评论反馈 | ✓ | ✘ | ✓ |
| 锁定讨论 | ✓ | ✘ | ✓ |
| 工单批处理 | ✓ | ✘ | ✓ |
| 工单看板 | ✓ | ✘ | ✓ |
| 从工单创建分支 | ✘ | ✘ | ✓ |
| 从评论创建工单 | ✓ | ✘ | ✓ |
| 工单搜索 | ✓ | ✘ | ✓ |
| 工单全局搜索 | ✘ | ✘ | ✓ |
| 工单依赖关系 | ✓ | ✘ | ✘ |
| 通过 Email 创建工单 | ✘ | ✘ | ✓ |
| 服务台 | ✘ | ✘ | ✓ |
5.Pull/Merge requests
| 特性 | Gitea | Gogs | GitLab CE |
|---|---|---|---|
| Pull/Merge requests | ✓ | ✓ | ✓ |
| Squash merging | ✓ | ✘ | ✓ |
| Rebase merging | ✓ | ✓ | ✘ |
| 评论 Pull/Merge request 中的某行代码 | ✓ | ✘ | ✓ |
| 指定 Pull/Merge request 的审核人 | ✓ | ✘ | ✓ |
| 解决 Merge 冲突 | ✘ | ✘ | ✓ |
| 限制某些用户的 push 和 merge 权限 | ✓ | ✘ | ⁄ |
| 回退某些 commits 或 merge request | ✓ | ✘ | ✓ |
| Pull/Merge requests 模板 | ✓ | ✓ | ✓ |
| 查看 Cherry-picking 的更改 | ✓ | ✘ | ✓ |
| 下载 Patch | ✓ | ✘ | ✓ |
| Merge queues | ✘ | ✘ | ✘ |
6.第三方集成
| 特性 | Gitea | Gogs | GitLab CE |
|---|---|---|---|
| 支持 Webhook | ✓ | ✓ | ✓ |
| 自定义 Git 钩子 | ✓ | ✓ | ✓ |
| 集成 AD / LDAP | ✓ | ✓ | ✓ |
| 支持多个 LDAP / AD 服务 | ✓ | ✓ | ✘ |
| LDAP 用户同步 | ✓ | ✘ | ✓ |
| SAML 2.0 service provider | ✘ | ✘ | ✓ |
| 支持 OpenId 连接 | ✓ | ✘ | ✓ |
| 集成 OAuth 2.0(外部授权) | ✓ | ✘ | ✓ |
| 作为 OAuth 2.0 provider | ✓ | ✘ | ✓ |
| 二次验证 (2FA) | ✓ | ✓ | ✓ |
| 集成 Mattermost/Slack | ✓ | ✓ | ✓ |
| 集成 Discord | ✓ | ✓ | ✓ |
| 集成 Microsoft Teams | ✓ | ✘ | ✓ |
| 显示外部 CI/CD 的状态 | ✓ | ✘ | ✓ |
二、安装
1.docker compose方式安装
docker compose up -d
version: '3'
services:
# gogs:
# image: gogs/gogs:0.13
# container_name: gogs
# environment:
# - USER_UID=1000
# - USER_GID=1000
# - TZ=Asia/Shanghai
# ports:
# - 22:22
# - 3000:3000
# volumes:
# - /mnt/multimedia/data/sync/gogs:/data
# restart: always
# networks:
# - macvlan
# https://docs.gitea.com/installation/install-with-docker
gitea:
image: gitea/gitea
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=192.168.255.254:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=zjFZd7H8QYhYtiAR
restart: always
networks:
- macvlan
volumes:
- /mnt/multimedia/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "22:22"
networks:
macvlan:
external: true
2.k8s方式安装
https://truecharts.org/charts/stable/gitea/
helm upgrade --install -n gitea --create-namespace my-gitea oci://tccr.io/truecharts/gitea -f values.yaml
2.1 按需修改app.ini配置文件
nano gitea/conf/app.ini
APP_NAME = Gitea: Git with a cup of tea
RUN_MODE = dev
WORK_PATH = /data
[cache]
ADAPTER = memcache
ENABLED = true
HOST = my-gitea-memcached:11211
[database]
DB_TYPE = mysql
HOST = 192.168.255.254:3306
NAME = gitea
PASSWD = zjFZd7H8QYhYtiAR
USER = gitea
[metrics]
ENABLED = true
[repository]
ROOT = /data/git/repositories
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NDczMTY5MDZ9.WZF1zxoQ78hCJLBnUp-EG8Ft3bu25bq7WbT1O4T1CbM
[webhook]
ALLOWED_HOST_LIST = 0.0.0.0
[server]
APP_DATA_PATH = /data
DOMAIN = gitea.k8s.home.love
ENABLE_PPROF = false
HTTP_PORT = 3000
PROTOCOL = http
ROOT_URL = http://gitea.k8s.home.love/
SSH_DOMAIN = gitea.ssh.home.love
SSH_LISTEN_PORT = 22
SSH_PORT = 22
START_SSH_SERVER = true
[oauth2]
JWT_SECRET = Dqz-cVNhicWy2OwsEl7vCvXW0HdRqY1SPKuVFvtyC1I
2.2 配置域名
# https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/crd/http/ingressroute/
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: traefik-host
namespace: gitea
spec:
entryPoints:
- web
routes:
- match: Host(`gitea.k8s.home.love`)
kind: Rule
services:
- name: my-gitea
port: 3000
三、常见问题
1.迁移不被允许
https://docs.gitea.cn/administration/config-cheat-sheet/#%E8%BF%81%E7%A7%BB-migrations
[migrations]
ALLOW_LOCALNETWORKS=true
ALLOWED_DOMAINS=*
2.webhook不被允许
https://docs.gitea.cn/administration/config-cheat-sheet/#webhook-webhook
[webhook]
ALLOWED_HOST_LIST = *
更多推荐


所有评论(0)