文章目录
一、对比 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=vfsc.home.love,*.github.com,github.com