Forgejo简介
Forgejo 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。同时,它是Gitea的一个fork版本,并且将来会独立于Gitea成为一个真正免费开源的产品。
功能特性
- 代码托管:Forgejo⽀持创建和管理仓库、浏览提交历史和代码⽂件、审查和合并代码提交、管理协作者、管理分⽀等。它还⽀持许多常见的Git特性,⽐如标签、Cherry-pick、hook、集成协作⼯具等。
- 轻量级和快速: Forgejo 的设计目标之一就是轻量级和快速响应。它不像一些大型的代码托管平台那样臃肿,因此在性能方面表现出色,适用于资源有限的服务器环境。由于其轻量级设计,Forgejo 在资源消耗方面相对较低,可以在资源有限的环境下运行良好。
- 易于部署和维护: 轻松地部署在各种服务器上,不需要复杂的配置和依赖。这使得个人开发者或小团队可以方便地设置和管理自己的 Git 服务。
- 安全性: Forgejo 注重安全性,提供了用户权限管理、访问控制列表等功能,可以确保代码和数据的安全性。
- 代码评审:代码评审同时支持 Pull Request workflow 和 AGit workflow。评审⼈可以在线浏览代码,并提交评审意见或问题。 提交者可以接收到评审意见,并在线回 复或修改代码。代码评审可以帮助用户和企业提⾼代码质量。
- CI/CD: Forgejo Actions⽀持 CI/CD 功能,该功能兼容 GitHub Actions,⽤⼾可以采用熟悉的YAML格式编写workflows,也可以重⽤⼤量的已有的 Actions 插件。Actions 插件支持从任意的 Git 网站中下载。
- 项目管理:Forgejo 通过看板和⼯单来跟踪⼀个项⽬的需求,功能和bug。⼯单⽀持分支,标签、⾥程碑、 指派、时间跟踪、到期时间、依赖关系等功能。
- 制品库: Forgejo支持超过 20 种不同种类的公有或私有软件包管理,包括:Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant等
- 开源社区支持: Forgejo 是一个基于 MIT 许可证的开源项目,Forgejo 拥有一个活跃的开源社区,能够持续地进行开发和改进,同时也积极接受社区贡献,保持了平台的更新和创新。
- 多语言支持: Forgejo 提供多种语言界面,适应全球范围内的用户,促进了国际化和本地化。
Forgejo和其他同类比较
Forgejo和GitLab、OneDev、Gogs的对比如下:
| 维度 | GitLab CE | OneDev | Gogs | Forgejo |
|---|---|---|---|---|
| 功能范围 | 完整 DevOps | 一体化 DevOps | 基础代码托管 | 完整DevOps |
| 部署难度 | 复杂 | 中等 | 简单 | 简单 |
| 资源占用 | 高(4 核4G+) | 低(1 核 2G) | 极低(1 核 1G) | 极低(1 核 1G) |
| CI/CD | 内置(需 YAML) | 图形化配置 | 需第三方集成 | 内置 |
| 适用场景 | 中大型企业 | 中小团队/国内用户 | 个人/极简需求 | 小/中型团队 |
这里我选择Forgejo的原因有以下三点:
- 用Go语言编写的系统,性能高,使其资源占用低
- 功能丰富且上手简单
- 免费开源且社区非常活跃
创建Forgejo应用
在上篇文章中,我们部署了Dokploy,现在我们使用它快速的部署forgejo服务。
创建docker compose应用
修改下docker compose文件:
services:
forgejo:
image: codeberg.org/forgejo/forgejo:10
container_name: forgejo
environment:
- USER_UID=${USER_UID}
- USER_UID=${USER_UID}
- HTTP_PORT=${HTTP_PORT}
- FORGEJO__webhook__ALLOWED_HOST_LIST=${ALLOWED_HOST_LIST}
- FORGEJO__database__DB_TYPE=postgres
- FORGEJO__database__HOST=db:5432
- FORGEJO__database__NAME=forgejo
- FORGEJO__database__USER=forgejo
- FORGEJO__database__PASSWD=forgejo
restart: always
ports:
- "8100:8100"
- "222:22"
volumes:
- /opt/forgejo/forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
depends_on:
- db
db:
image: postgres:17
restart: always
environment:
- POSTGRES_USER=forgejo
- POSTGRES_PASSWORD=forgejo
- POSTGRES_DB=forgejo
volumes:
- /opt/forgejo/forgejo_db:/var/lib/postgresql/data
配置下环境变量:
USER_UID=1000
USER_GID=1000
HTTP_PORT=8100
ALLOWED_HOST_LIST=*
设置好之后点击部署。
成功启动:
配置forgejo
打开web页面http://localhost:8100/进行配置:
可以设置禁用自主注册并创建一个管理员账号:
创建第一个仓库并推送代码
创建仓库并提交代码: