Forgejo v15.0 已发布
摘要
Forgejo v15.0 于 2026 年 4 月 16 日发布,迎来了第 100 次版本更新。本次发布带来了用户界面优化、安全性增强、仓库级访问令牌支持,以及更强大的 Forgejo Actions 功能(包括可复用工作流扩展和 OpenID Connect 支持)。
<p><a href="https://lobste.rs/s/uxkvmr/forgejo_v15_0_is_available">评论</a></p>
查看缓存全文
缓存时间: 2026/04/21 02:58
# Forgejo v15.0 已发布
Source: https://forgejo.org/2026-04-release-v15-0/
Forgejo v15.0(https://forgejo.org/download/)是一款轻量级、由社区开发、支持自托管的代码协作平台,于 2026 年 4 月 16 日正式发布。这标志着 Forgejo 迎来**第 100 个版本**。下文精选了本次更新的重点内容,完整列表请参阅发布公告(https://codeberg.org/forgejo/forgejo/milestone/36366)。
我们提供了专用的测试实例(https://v15.next.forgejo.org/)供您体验。在升级之前,我们*强烈建议*您按照升级指南(https://forgejo.org/docs/v15.0/admin/upgrade/)中的说明进行完整备份,并仔细阅读发布公告(https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/15.0.0.md)中的所有*重大变更(Breaking Changes)*。如果您是从 v11.0 升级,请务必同时查看 v12.0(https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/12.0.0.md)、v13.0(https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/13.0.0.md)和 v14.0(https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/14.0.0.md)发布公告中的重大变更。如有疑问,请随时在聊天室(https://matrix.to/#/#forgejo-chat:matrix.org)寻求帮助。
## 概述 https://forgejo.org/2026-04-release-v15-0/#summary
Forgejo v15.0 优化了日常可用性与安全性,并增强了高级 Forgejo Actions 的使用体验。
问题过滤和发行版列表的 UI 改进让 Forgejo 更易上手。容器与仓库的自动关联功能为仓库管理员免去了手动操作。现在可以从 Pull Request 的单次提交视图中修改 Git 笔记。
仓库专属访问令牌使 API 调用更加安全。
Forgejo Actions 现已支持展开可复用工作流,带来更流畅的用户体验和更强大的能力。支持 OpenID Connect 以实现第三方系统的安全访问。Forgejo Runner 注册流程的简化降低了大多数用户的安装门槛,而临时运行器则为高级集成场景提供了安全的自动扩缩容能力。
## 重大变更 https://forgejo.org/2026-04-release-v15-0/#breaking-change
### 默认 Cookie 名称已更改 https://forgejo.org/2026-04-release-v15-0/#default-cookie-names-changed
默认 Cookie 名称已移除品牌标识(https://codeberg.org/forgejo/forgejo/pulls/10645)。除非您在实例配置中重命名了这些 Cookie,否则所有用户在升级后都需要重新登录。您可以将 `COOKIE_REMEMBER_NAME` 选项(https://forgejo.org/docs/latest/admin/config-cheat-sheet/#security-security:~:text=COOKIE_REMEMBER_NAME)改回 `gitea_incredible` 以避免此情况。
### Docker Rootless 配置文件位置 https://forgejo.org/2026-04-release-v15-0/#docker-rootless-config-file-location
在 Forgejo v8.0.0 中,配置文件默认路径已从 `/etc/gitea/app.ini` 更改为 `/var/lib/gitea/custom/conf/app.ini`。此前的容器部署脚本和入口脚本中加入了向后兼容逻辑及启动警告,现已移除。此变更仅影响使用 Rootless 镜像的容器化部署用户。如果您的配置文件存储在绑定至容器 `/etc/gitea` 的数据卷中,请将其移至新位置,或通过环境变量 `GITEA_APP_INI` 覆盖指定。完成迁移或确认部署从未使用过 v8.0.0 之前的版本后,可安全移除容器中未使用的 `/etc/gitea` 数据卷。
## 新增功能 https://forgejo.org/2026-04-release-v15-0/#new-features
### 仓库专属访问令牌 https://forgejo.org/2026-04-release-v15-0/#repository-specific-access-tokens
创建访问令牌时,现在可将其限制为特定仓库列表(https://codeberg.org/forgejo/forgejo/pulls/11696)。该令牌将无法对该列表之外的任何资源执行操作(公共仓库的只读访问除外)。如需了解更多详情,请参阅更新后的《访问令牌作用域》文档(https://forgejo.org/docs/latest/user/token-scope/#repository-and-organization-access)。
为契合新的安全设计预期,我们对多项 Forgejo 仓库 API 进行了权限校验调整,以统一新访问令牌与原有“仅公开”访问令牌的预期行为。此次对齐过程中包含了对“仅公开”令牌行为的更改,相关变更已作为重大变更记录在 Forgejo 发布公告中。
图示:生成访问令牌的表单界面。选中“特定仓库”选项后,会显示用于选择仓库的附加菜单。
### 容器自动关联 https://forgejo.org/2026-04-release-v15-0/#auto-linking-containers
通过 Forgejo 软件包 Registry 上传容器镜像时,现在会在以下场景中自动关联(https://codeberg.org/forgejo/forgejo/pulls/10617)到对应仓库:
1. 容器的 `org.opencontainers.image.source` 标签被设置为某仓库的 URL。
2. 容器名称以 `{owner}/{repo}` 开头。
### 改进的错误提示 https://forgejo.org/2026-04-release-v15-0/#improved-error-messages
如果通过 OAuth2 提供的访问令牌在 Forgejo 数据库中不存在,错误提示现会明确告知(https://codeberg.org/forgejo/forgejo/pulls/10727)该令牌无效。此前它只会返回一条笼统的“用户不存在”错误。
当在缺乏写入权限的仓库执行推送时,`git push` 现会返回更详细的提示信息(https://codeberg.org/forgejo/forgejo/pulls/10941):包括推送者身份(若使用了错误的密钥或令牌,此项非常有用)、推送目标及分支(便于排查远程地址是否配置错误),以及通过 Git 工作流创建 PR 的操作指引。
### 仅限登录用户会话 https://forgejo.org/2026-04-release-v15-0/#sessions-only-for-logged-in-users
如果您曾希望在反向代理或 Web 应用防火墙(WAF)层区分已登录用户与匿名用户,可能会发现这很难实现。此前,即使会话未附带任何数据,每个匿名用户也会被分配一个 Session Cookie。
此问题已在(https://codeberg.org/forgejo/forgejo/pulls/11324)得到改善:现在仅在需要设置会话数据时才会下发 Cookie,即用户已登录或正在进行登录流程时。只需验证该 Cookie 是否由 Forgejo 设置且有效,即可准确区分匿名用户与已登录用户。
## 界面功能 https://forgejo.org/2026-04-release-v15-0/#ui-features
### 使用按钮排除标签 https://forgejo.org/2026-04-release-v15-0/#exclude-labels-with-button
筛选菜单中排除标签的交互方式已重构(https://codeberg.org/forgejo/forgejo/pulls/10702)。无需再按住键盘上的 Alt 键,现在可通过按钮直接操作,实现纯鼠标/触屏使用。当无法悬停时(例如使用触摸屏时),按钮也将始终保持可见状态。
图示:筛选标签菜单中新增的“排除标签”按钮演示。
### 响应式发行版列表 https://forgejo.org/2026-04-release-v15-0/#responsive-releases-list
发行版页面已重构(https://codeberg.org/forgejo/forgejo/pulls/11080),适配各种尺寸与比例的屏幕显示。
图示:包含名称、描述与下载链接的发行版页面。布局正常,元素未溢出。
### 改进的 Git 笔记编辑 https://forgejo.org/2026-04-release-v15-0/#improved-git-notes-editing
提交记录(Commit)可附加 Git 笔记(https://git-scm.com/docs/git-notes)。笔记的添加、编辑和删除功能已优化(https://codeberg.org/forgejo/forgejo/pulls/11365)。现在可在界面上直接取消编辑。此外,还支持从 Pull Request 的单次提交视图中修改笔记。
图示:在现有提交上编辑 Git 笔记的表单演示。
### 归档时请填写说明 https://forgejo.org/2026-04-release-v15-0/#please-document-your-archival
虽然归档仓库时 Forgejo 不会强制要求填写归档原因,但现在会在适用时推荐您填写(https://codeberg.org/forgejo/forgejo/pulls/11375)。
### 无障碍体验优化 https://forgejo.org/2026-04-release-v15-0/#accessibility-improvements
本版本针对屏幕阅读器可用性进行了大量改进(https://codeberg.org/forgejo/forgejo/pulls?state=all&labels=81214&milestone=36366)。虽然这些改动在视觉上不可见,但对于帮助视障人士无障碍使用 Forgejo 至关重要。
## Forgejo Actions 改进 https://forgejo.org/2026-04-release-v15-0/#forgejo-actions-improvements
### 可复用工作流展开 https://forgejo.org/2026-04-release-v15-0/#reusable-workflow-expansion
“可复用工作流”是 Forgejo Actions 的一项重要特性,常用于跨多个仓库复用通用的 CI 任务,允许一个工作流调用另一个工作流。例如,以下工作流实际上会运行来自另一个仓库的不同工作流:
```yaml
jobs:
caller:
uses: my-org/workflow-library/.forgejo/workflows/reusable.yml@main
```
自该功能上线以来一直存在局限:必须填写 `runs-on` 字段,导致目标工作流无法使用不同的 Runner 运行多个 Job;且目标工作流的所有日志在 UI 中仅显示为单条“Setting up job”日志条目。这使得该功能在某些简单场景下可用,但实际使用不便,也无法满足更复杂的流水线需求。
为了让这些工作流更易用且更符合用户预期,Forgejo v15.0 对其进行了大幅重构(https://codeberg.org/forgejo/forgejo/issues/9768#issuecomment-8828016)。当移除顶层 `runs-on` 字段后,`uses` 引用的工作流将被 Forgejo 展开(https://forgejo.org/docs/latest/user/actions/reference/#jobsjob_iduses)为其内部的各个 Job 并独立调度。
将每个 Job 分离后,它们的日志可在 Forgejo Actions 日志 UI 中分别展示,极大提升了日志审查时的可读性。
拆分为独立 Job 后,不同 Runner 可根据各自配置的 Label 承接任务,从而支持在不同系统环境或平台上并行运行。
### OpenID Connect 身份认证 https://forgejo.org/2026-04-release-v15-0/#openid-connect-identity
Forgejo Actions 工作流通常需要向第三方系统进行身份验证,以便对软件变更进行校验或部署。截至 Forgejo v14.0,常见做法是在 Forgejo 中创建包含这些系统认证 Token 的 Secrets。该方案虽能生效,但存在安全隐患——一旦攻击者窃取这些静态 Token,它们可能永久有效。最佳安全实践应定期轮换 Token 以降低风险,但这往往难以落实。
OpenID Connect Token 提供了一种替代性的联邦身份认证方案。在第三方系统支持的前提下,它能彻底规避静态 Token 的安全风险。在此机制下,Action 工作流向 Forgejo 申请签名好的 JWT,Forgejo 签发后交由外部系统验签。外部系统可据此确认请求确实来自具有特定声明(Claims)的 Forgejo 工作流。与静态 Token 不同,该信任关系基于服务器间通信,即使截获、泄露或外传的 Token 也仅具备极短的有效期。
随着 Forgejo Runner(https://code.forgejo.org/forgejo/runner/pulls/1232,需 >v12.5.0)与 Forgejo(https://codeberg.org/forgejo/forgejo/pulls/10481,v15.0 版本)的同步更新,Forgejo Actions 现已全面支持此功能。详细系统架构说明与实施指南请查阅官方文档(https://forgejo.org/docs/latest/user/actions/security-openid-connect/)。
### 临时运行器 (Ephemeral Runners) https://forgejo.org/2026-04-release-v15-0/#ephemeral-runners
Forgejo 现已支持注册仅执行单个 Job 的临时运行器。Job 完成后,该运行器在 Forgejo 上的注册信息将被自动删除,从而防止运行器凭据被重复利用。此特性允许外部编排工具通过为编排集群中的每次任务派发临时凭据来实现运行器自动扩缩容,同时将安全风险降至最低。
例如,可通过 Forgejo API 注册运行器:
```bash
$ curl -X 'POST' \
'https://example.com/api/v1/admin/actions/runners' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 4f28dd097f2aa4776daa71599dee1b215be84d19' \
-H 'Content-Type: application/json' \
-d '{
"name": "example runner",
"ephemeral": true
}'
{
"id":31,
"uuid":"392c9434-6bb9-454b-b9ff-646875cf6691",
"token":"09d130cf90f9d757d83e5cc5a5338c470f04b71c"
}
```
随后使用 Forgejo Runner 的 `one-job` 命令,运行器将拉取并执行单个任务:
```bash
$ echo -n "09d130cf90f9d757d83e5cc5a5338c470f04b71c" > /tmp/secret-token.txt
$ ./forgejo-runner one-job \
--url https://example.com \
--uuid 392c9434-6bb9-454b-b9ff-646875cf6691 \
--token-url file:///tmp/secret-token.txt \
--label debian:docker://node:current-trixie \
--wait
INFO[0000] No configuration file specified; using default settings.
INFO[2026-04-03T15:45:10-06:00] Starting job
INFO[2026-04-03T15:45:10-06:00] runner: example runner, with version: v12.8.0, with labels: [debian], ephemeral: true, declared successfully
INFO[2026-04-03T15:45:10-06:00] single task poller launched
... (logs omitted) ...
```
任务拉取并完成执行后,该运行器的凭据将立即失效。
### 简化的运行器注册流程 https://forgejo.org/2026-04-release-v15-0/#simplified-runner-registration
Forgejo v15.0 引入了全新的运行器注册工作流(https://codeberg.org/forgejo/forgejo/pulls/11516),提供简洁的 Web 交互体验。不再需要在 Forgejo Runner 端运行 CLI 注册工具(在 Docker 容器中管理较为繁琐),现在可直接通过 Forgejo 的 Web 界面(及 Web API)创建运行器:
图示:用于创建新运行器的表单。包含名称和可选的描述字段。
图示:更新运行器配置以连接至 Forgejo 的操作指引。
然后只需将几项关键设置复制到 Forgejo Runner 的配置文件中,即可启动运行器。
《Forgejo Runner 安装文档》(https://forgejo.org/docs/latest/admin/actions/#forgejo-runner)已随此次更新同步刷新,交互式注册(https://forgejo.org/docs/latest/admin/actions/registration/#interactive-registration)的详细操作指南也已就绪。
## 发版计划与长期支持 (LTS) https://forgejo.org/2026-04-release-v15-0/#release-schedule-and-long-term-support
根据发版计划(https://forgejo.org/docs/v15.0/admin/release-schedule/),大版本每三个月发布一次。补丁版本则根据所包含的 Bug 修复或安全修复的紧急程度更高频次地推送。Forgejo v15.0 为长期支持 (LTS) 版本,将持续提供支持直至 **2027 年 7 月 15 日**。
上一代 LTS 版本 Forgejo v11.0 的支持将持续至 **2026 年 7 月 16 日**,为您预留了充足的升级时间。若从 v11.0 升级,请务必记得查阅 v12.0 的发布公告(https://code
相似文章
Forgejo 月度报告 - 2026年5月
Forgejo 2026年5月月度报告详细介绍了 v15 LTS 版本、v11 和 v14 的安全更新以及 Forgejo Runner 的更新。v14 支持已结束,v11 支持也即将结束,建议用户升级。
Forge
Forge 是一个全新的 CLI 与 Go 库,通过统一接口和自动 forge 检测,一次性打通 GitHub、GitLab、Bitbucket 与 Gitea/Forgejo 的交互。
为何我要从 GitHub 迁移至 Forgejo
本文探讨了从 GitHub 迁移到自托管的 Forgejo 的决定,主要提及了对数据所有权、可靠性以及 AI 数据收集实践的担忧。文章还介绍了荷兰政府类似的举措,并详细说明了个人 Forgejo 实例的技术部署。
Forge
Forge 是一个专为构建 AI 驱动应用程序而设计的综合 React 工具包。
我们应得的代码锻造平台
本文讨论了对GitHub可靠性日益增长的不满,并提出基于AT协议的去中心化Git锻造平台Tangled,作为一个结合了中心化便利性与用户数据所有权的有前途的替代方案。