86 lines
5.3 KiB
Markdown
86 lines
5.3 KiB
Markdown
# Internal Forge Comparison
|
||
|
||
## Quick decision guide
|
||
|
||
| If we want… | Choose |
|
||
| -------------------------------------------------------------------------------------------------------------------------- | ----------- |
|
||
| A **complete DevOps platform** with integrated CI/CD, package registry, security scanning, and enterprise features | **GitLab** |
|
||
| A **lightweight, easy-to-operate Git server** with minimal resource usage | **Gitea** |
|
||
| A **community-driven forge** similar to Gitea but with **built-in CI (Forgejo Actions)** and future **federation support** | **Forgejo** |
|
||
|
||
# Comparison
|
||
## Pricing
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|-------------------------------------------|:------------------:|:-----------------:|:-------------------:|
|
||
| Free tier | ✅ | ✅ | ✅ |
|
||
| Paid tier (per user/month) | **premium**: 29\$<br>**ultimate**: on request | **enterprise**: 19\$ | ❌ (donation-based) |
|
||
| Information on pricing | [**info**](https://about.gitlab.com/pricing/?deployment=self-managed-deployment) | [**info**](https://about.gitea.com/pricing/) | [**info**](https://liberapay.com/forgejo) |
|
||
|
||
## Core Git Features
|
||
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|---------------------------|:------:|:-----:|:-------:|
|
||
| Git repositories | ✅ | ✅ | ✅ |
|
||
| Git LFS support | ✅ | ✅ | ✅ |
|
||
| Git tags for releases | ✅ | ✅ | ✅ |
|
||
| Protected branches | ✅ | ✅ | ✅ |
|
||
| Repository mirroring | ✅ | ✅ | ✅ |
|
||
| Webhooks | ✅ | ✅ | ✅ |
|
||
|
||
## Collaboration and Project Management
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|----------------------------------|:------:|:-----:|:-------:|
|
||
| Issues | ✅ | ✅ | ✅ |
|
||
| Pull / merge requests | ✅ | ✅ | ✅ |
|
||
| Pull request reviewer assignment | ✅ | ✅ | ✅ |
|
||
| Pull request inline comments | ✅ | ✅ | ✅ |
|
||
| Wiki (per repository) | ✅ | ✅ | ✅ |
|
||
| Snippets / gists | ✅ | ⚠️ limited | ⚠️ limited |
|
||
| Project management | **free**: simple kanban<br>**premium**: [roadmap](https://docs.gitlab.com/user/group/roadmap/) | [simple kanban](https://forum.gitea.com/t/gantt-diagrams-for-issues/788/3) | [simple kanban](https://forgejo.org/docs/next/user/project/) |
|
||
| Organization / group hierarchy | ✅ | ⚠️ simpler model | ⚠️ simpler model |
|
||
| Code search (global) | ✅ | ⚠️ limited | ⚠️ limited |
|
||
| Repository mirroring (push/pull) | ✅ | ✅ | ✅ |
|
||
|
||
## CI/CD and Automation
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|--------------------------------|:------:|:-----:|:-------:|
|
||
| Built-in CI/CD | ✅built-in Gitlab CI/CD |️ ❌ external CI (woodpecker/Drone) | ✅Forgejo Actions (Github-Actions compatible) |
|
||
| Automated workflows | ✅ | ⚠️ external CI required | ✅ |
|
||
| Workflow triggers | ✅ | ⚠️ depends on CI integration | ✅ |
|
||
| External CI integration | ✅ | ✅ | ✅ |
|
||
|
||
## Artifacts & Registries
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|---------------------------|:------:|:-----:|:-------:|
|
||
| Package registry | ✅ | ⚠️ limited ecosystem support | ✅ |
|
||
| Container registry | ✅ | ⚠️ plugin / external registry | ⚠️ evolving support |
|
||
|
||
## Authentication and Access Control
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|------------------------------|:------:|:-----:|:-------:|
|
||
| Access control | ✅ | ✅ | ✅ |
|
||
| LDAP / Active Directory | ✅ | ✅ | ✅ |
|
||
| SAML / enterprise SSO | ⚠️ enterprise tier | ❌ not supported | ❌ not supported |
|
||
| Federation between instances | ❌ not supported | ❌ not supported | ⚠️ planned (ForgeFed) |
|
||
|
||
## Operations / Self-Hosting
|
||
| Feature | GitLab | Gitea | Forgejo |
|
||
|-----------------------|:------:|:-----:|:-------:|
|
||
| Resource footprint | ❌ heavy (many services) | ✅ light | ✅ light |
|
||
| Deployment complexity | ❌ complex | ✅ simple | ✅ simple |
|
||
|
||
# Notes on the test project setup:
|
||
|
||
## Gitea
|
||
- SSH is disabled by default, so we use HTTPS to clone the repository.
|
||
- it can be enabled in the Gitea settings if needed (see [here](https://forum.gitea.com/t/how-do-i-enable-ssh-on-a-gitea-self-hosted-instance/10044/3) and [here](https://forum.gitea.com/t/how-to-set-ssh-to-alow-users-with-gite-account-to-clone-via-ssh/2297/5))
|
||
- HTTPS: works, but requires the user to set a password manually in the profile first. That's unexpected since it should be inherited by authentik. Probably a misconfiguration from there.
|
||
|
||
## Forgejo
|
||
- SSH is disabled by default, so we use HTTPS to clone the repository. Same as with Gitea.
|
||
- HTTPS: Same as with Gitea.
|
||
|
||
## Gitlab
|
||
- SSH is active by default. But the port is wrongly configured and probably already used by the host...
|
||
- HTTPS: works well.
|