oss

Forgejo 正在成为镜像与平台之间那座自有 forge

8 条来源 4 条一手来源 已翻译 2026年4月23号

正文

到了 2026 年,Forgejo 的重要性来自一个背景变化:对许多团队来说,Git 托管已经不再是中性的后台工具。一个仓库托管面同时承载代码 review、身份、packages、CI、项目记忆、moderation,以及谁有权改变规则这个问题。Forgejo 有用的承诺,不在于复制每一种 GitHub 习惯。它的承诺更窄,也更接近运维现实:团队可以拥有一层现代 forge 表面,逐步迁移,并保留足够兼容性,让第一段迁移路径可承受。[1][3][4]

截至 2026-04-23T00:02:20Z UTC,当前上游信号是 Forgejo v15.0。它在 2026-04-16 发布,是项目第 100 个 release,也是一条 Long Term Support release。发布说明给出 v15 支持至 2027-07-15;上一条 LTS 线 v11.0 继续支持至 2026-07-16,为运营者留下升级跑道。[1][2] 这比功能清单更重要。自托管 forge 是 system of record。发布节奏若不清楚,迁移就会变成一场私有维护押注。

FOSDEM 2024 的大型阶梯教室内坐满听众,大家面向前方演讲者。
Iopensa 拍摄的布鲁塞尔 FOSDEM 2024。Forgejo 的采用故事属于这种公开基础设施文化:代码 forge 先是社会系统,然后才是功能矩阵。[8]

浅层迁移只是镜像。把代码推到一个新 remote,告诉贡献者那里还有一个 URL,然后让真正工作流继续停在别处。这可以作为起步,却没有测试 Forgejo 真正试图承接的对象。真正的测试,是 pull requests、issue templates、branch protection、packages、Actions runners、access tokens、backup policy 与 admin routines 同时搬到同一层自有表面上。[3][4][5]

Codeberg 展示了这个论点的公共实例版本。它的 FOSDEM 展位页面把 Codeberg 描述为一个 nonprofit,为自由与开源项目提供 Git hosting、CI/CD 与 Pages;同页还写到,自 2022 年 12 月起,Codeberg 承载 Forgejo 项目。该页面把 Forgejo federation 放在摆脱 single points of failure 的路径上,目标是连接公共与自托管实例,并逐步连接其他 forge。[6] 对正在判断是否自托管的团队来说,这个框架准确:Forgejo 最强之处,是被当成带有治理与互操作性的基础设施,而并非被当成更便宜的仓库屏幕。

先划清所有权边界

第一个采用问题并非 "Forgejo 能不能导入我们的仓库"。它可以。更好的问题是:"哪些协作契约,我们愿意自己运营?" 仓库存储是容易部分。更难的是身份、项目历史、CI 执行、事件响应、存储增长、abuse handling 与升级纪律。

Forgejo 的安装文档很快就显露这些边界。二进制安装意味着安装 gitgit-lfs,创建专门的 git 用户,分配 /var/lib/forgejo 这类数据目录,把配置放在 /etc/forgejo/app.ini 下,选择数据库,并把服务交给 systemd 或等价 supervisor 管理。[3] SQLite 对小型安装已经足够;一旦团队加入重度 LFS、package storage 或许多仓库,负责人就要像运营者一样思考,而不只是像工具评估者一样比较。[3]

因此,正确的第一轮 rollout 应该是一个真实仓库 pilot,而并非玩具 demo。选择一个有活跃 pull requests、至少一个 release artifact、两三位常规 reviewers,以及一条非平凡 workflow 的项目。先镜像代码。随后迁移 issue intake、review 与一条 CI 路径。若 pilot 结束后,团队仍说不清谁负责 runner capacity、backups、admin access 与 offboarding,迁移仍停留在镜像层。

发布时钟属于产品

Forgejo 按固定季度节奏发布 stable releases。发布日程页面列出 v14.0 的 2026-01-15 发布日与 2026-04-30 EOL,v15.0 LTS 的 2026-04-16 发布日与 2027-07-15 EOL,并把未来季度列车映射到 2027 年。[2] 对平台团队而言,这是强信号,因为它给 change windows、test instances 与 patch policy 提供了日历。

v15 release 也展示了项目移动方向。它加入 repository-specific access tokens,改善 releases list 响应式体验,支持在 pull-request commit 视图里编辑 Git notes,并用 reusable workflow expansion、OpenID Connect、简化 runner registration 与 ephemeral runners 扩展 Forgejo Actions。[1] 这些功能单独看并不喧哗。放在一起,它们指向的是一座正在承载更多协作与部署表面的 forge,同时没有把 hosted SaaS 的便利当成免费之物。

采用上的后果很简单:不要从死胡同分支开始。仍在 v11 LTS 线上的团队,通向 v15 的跑道有限。2026 年 4 月之后新启动的团队,应把 v15 视为默认基线,除非 package channel 带来临时约束。[1][2] 用计划长期运营的 release line 设计 pilot,并在服务变得难以移动之前写下下一次升级窗口。

Actions 兼容是一条通道

Forgejo Actions 很容易成为迁移桥梁,因为许多组织已经有 YAML workflows。文档对边界说得谨慎。Reference 写到,当 Forgejo 没有记录某个 key 时,GitHub Actions 文档可以提供帮助;同时,GitHub Actions 与 Forgejo Actions 并不相同,workflows 需要调整。[4] Administrator guide 写到,自 Forgejo v1.21 起,Actions 默认启用,也可以在 app.ini 中关闭。[4]

这就是正确心智模型:兼容性是一条通道,并非一份完全相同行为的合同。要审计每条 workflow:是否依赖 hosted-runner 假设、GitHub-specific API calls、第三方 marketplace actions、cache behavior、OIDC claims 与长寿命 deployment secrets。随后决定哪些 workflows 应该跑在 Docker labels、host runners、restricted ephemeral runners 上,哪些仍应放在 Forgejo 外部。[1][4]

v15 的 Actions 变化让这份审计更值得做。Reusable workflow expansion 减少了旧折中:被引用 workflow 的内部工作很容易坍缩成难读的 setup log;OIDC 则在第三方系统支持 federation 时,为团队摆脱 static deployment tokens 提供路径。[1] Ephemeral runners 帮助高级运营者避免在 job 完成后继续复用 runner credentials。[1] 这些是真实改进,同时也是运维职责。团队现在拥有 runner fleet、labels、network path,以及一条 workflow 被攻破后的 blast radius。

备份与升级才是治理测试

Forgejo 的升级指南带着基础设施文档应有的直白。它要求升级前进行 full backup,并把 synchronized point-in-time snapshot 称为可靠方法;升级后则建议用 forgejo doctor check --all --log-file /tmp/doctor.log 与手工 web-interface checklist 做验证。[5] 文档还说明,从 Gitea 升级到 Forgejo 支持到 Gitea v1.22,分两步执行:先升到 Forgejo v10.0.x,再升到任何大于 v10 的 Forgejo 版本。[5]

这让迁移变成治理测试。若团队想离开商业 forge,因为它想要更多控制权,控制权就要在枯燥位置上表现出来:restoration drills、admin role review、runner isolation、storage accounting、upgrade rehearsals 与书面 rollback path。若自有 forge 无法在升级失败后恢复,或者只有一个人知道 app.ini 与 database snapshots 在哪里,所有权的理由很快会塌陷。

这里有一个有用模式。把 Forgejo 当成带 SLO 的内部平台,而并非 sidecar service。定义 restore objective。保留 off-host backup。LTS cutover 前先跑 staging upgrade。把 Actions runner versions 与 Forgejo application 分开跟踪。定期审查外部身份配置。写明 abandoned repositories、spam 与 user removal 的处理政策。这些任务听起来朴素,因为正是这些工作把 forge 变成基础设施。

外部信号是渐进迁移

最强的外部采用信号,并非一波戏剧性离场,而是已经理解源码基础设施的项目开始 dual-running。Phoronix 在 2026-02-16 报道,Gentoo 开始使用 Codeberg 作为替代贡献路径,同时把迁移处理为渐进过程:先放 ebuild repository,随后再进行更广范围迁移。同篇报道还提到,Codeberg 基于 Forgejo,并由德国 nonprofit 托管。[7]

这类移动比干净的 benchmark 更有信息量。成熟项目迁移,不会只因为功能矩阵整齐。它会测试贡献者是否还能提交修改,维护者是否还能在不丢失语境的情况下 review,新表面是否能与既有 canonical infrastructure 共存足够久,从而获得信任。[7]

对较小团队来说,教训在于复制形状,而并非复制政治。先用 mirror 与 contribution pilot 起步。迁移一类 workflow。判断 package registry、releases 与 wiki content 属于第一阶段还是第二阶段。让 GitHub 或另一座 forge 作为 read-only 或 fallback surface 保留,直到团队有证据说明 restore、upgrade 与 contributor onboarding 在压力下仍能工作。

Forgejo 适合哪些团队

Forgejo 适合想拥有协作层且准备运营它的团队。它适合重视 nonprofit 公共基础设施的开源项目,也适合需要私有 forge 但不想购买更大平台的组织,还适合能接受部分 workflow edits、以换取更可管理代码托管表面的工程组。[1][4][6]

当团队主要想要零运维 GitHub clone,深度依赖 hosted-runner economics 与 marketplace actions,或者无法为 upgrades and backups 分配长期负责人时,Forgejo 就不那么适合。在这种情形里,Forgejo 出问题并非因为它太小。问题在于团队要求一座 self-hosted forge 像 vendor-run service 一样运转,同时又移除了 vendor。

实际迁移顺序因而要克制。以 v15 LTS 为基线。先做 mirror。第二步迁移一个真实仓库的 pull-request path。第三步审计 Actions。在扩大服务范围前先加入 backups 与 restore drills。把 federation 作为战略方向,而并非 day-one dependency。若这些步骤站得住,Forgejo 就会超出 escape hatch,成为静态镜像与完整内部平台之间那座自有 forge。

来源

  1. Forgejo,《Forgejo v15.0 is available》——v15 发布日期、第 100 个 release、LTS 支持窗口、repository tokens、Actions OIDC、reusable workflow expansion 与 ephemeral runners。
  2. Forgejo 文档,《Release schedule》——季度发布节奏、v14/v15 日期、LTS 窗口与未来 release train。
  3. Forgejo 文档,《Installation from binary》——operating-user、directory、database、systemd 与 app.ini 运维设置。
  4. Forgejo 文档,《Forgejo Actions | Reference》——workflow syntax、GitHub Actions 兼容边界、runner labels 与 action execution model。
  5. Forgejo 文档,《Upgrade guide》——backup requirements、post-upgrade verification、forgejo doctor 与受支持的 Gitea migration path。
  6. Codeberg FOSDEM stand page——Codeberg nonprofit services、自 2022 年 12 月以来承载 Forgejo,以及 federation framing。
  7. Michael Larabel,Phoronix,《Gentoo Linux Begins Codeberg Migration In Moving Away From GitHub, Avoiding Copilot》——外部采用信号与渐进 Codeberg migration 语境。
  8. Wikimedia Commons 文件页,Iopensa 拍摄的 FOSDEM 2024 照片,本文题图来源。
Previous LLVM 的治理信号,藏在 monorepo 背后的发布列车里 Next asdf 首先是一份版本契约,然后才是工具安装器

Recommended In oss

Matched by subject and format