Gitea 28.0
摘要
Gitea 28.0.0 已发布,取消了历史上以 "1." 开头的版本号前缀,并新增了审计日志、机器人账号、HTTPS 部署令牌、用户模拟(impersonation)、代码所有者审批规则以及 Actions 队列视图等功能。与此同时,本次发布还对 Git 出站规则和 Actions 运行保留策略进行了重大破坏性变更,并包含多项安全修复。
暂无内容
查看缓存全文
缓存时间: 2026/09/30 23:05
# Gitea 28.0.0 已发布
来源:https://blog.gitea.com/release-of-28.0.0/
我们非常高兴地宣布 Gitea 的最新版本**v28.0.0**。Gitea 从其版本号中去掉了历史上的`1.`前缀,因此本次发布版本为**28.0.0**而非 1.28.0。亮点包括审计日志、机器人账号、HTTPS 部署令牌、管理员的用户模拟登录、CODEOWNERS 审批规则、diff 文件过滤以及 Actions 队列视图。其他所有内容请参阅[更新日志](https://blog.gitea.com/release-of-28.0.0/#changelog)。
我们非常感谢众多通过提交代码补丁、报告问题、进行翻译以及以许多其他方式支持本项目的人们。
本次发布包含安全修复。为了给大家留出升级时间,详细信息将在大约一周后补充到本文中。
你可以从我们的[下载页面](https://dl.gitea.com/gitea/28.0.0/)下载 Gitea。请阅读我们的[安装指南](https://docs.gitea.com/category/installation)以获取更多信息。
升级前,请阅读[破坏性变更](https://blog.gitea.com/release-of-28.0.0/#major-breaking-changes)。然后备份数据,替换二进制文件或 Docker 容器,再重启。
发布二进制文件不再包含 32 位 x86 或`gogit`构建版本,Snap 也不再为 armhf 构建。下载文件名也不再带有操作系统版本后缀,例如`gitea-28.0.0-windows-amd64.exe`,因此请更新任何下载脚本。
我们要感谢所有在 [Open Collective](https://opencollective.com/gitea) 上为本项目提供资金支持的赞助者们,帮助维持项目的运转。
## 主要破坏性变更
章节标题:"主要破坏性变更"(https://blog.gitea.com/release-of-28.0.0/#major-breaking-changes)
### ⚠️ Git 网络操作使用内部代理和新的出站规则([#39426](https://github.com/go-gitea/gitea/pull/39426))
章节标题:"⚠️ Git 网络操作使用内部代理和新的出站规则(#39426)"(https://blog.gitea.com/release-of-28.0.0/#%EF%B8%8F-git-network-operations-use-an-internal-proxy-and-new-egress-rules-39426)
迁移、镜像和其他 Git 网络操作现在会通过一个内部代理,该代理会对直接连接应用出站(egress)设置。**升级前**请检查你的允许和阻止列表:
- `external`预设已被移除。若要采用默认拒绝策略,请设置`EGRESS_MODE = strict`并列出允许的主机。`[migrations] EGRESS_MODE`涵盖迁移和镜像,`[security] EGRESS_MODE`涵盖 webhook 和 OAuth2。
- 在严格模式下,不带端口的条目仅允许 80 和 443 端口。
- 在默认的`lax`模式下,`[security] ALLOWED_HOST_LIST`不再限制公共主机。设置`[security] EGRESS_MODE = strict`可将其保留为独占允许列表。当设置了列表但未显式指定`EGRESS_MODE`时,Gitea 会在启动时记录一条警告。
- IP 地址条目不再接受通配符,`*`也不再是有效的条目。
- 域名条目遵循 curl 语法:`example.com`匹配该域名及其所有子域名,`*.example.com`仅匹配子域名,而`example.*`无效。
- `[migrations] BLOCKED_HOST_LIST`中的无效条目现在会导致 Gitea 无法启动。
- `[migrations] ALLOWED_DOMAINS`、`BLOCKED_DOMAINS`和`ALLOW_LOCALNETWORKS`已被弃用,请改用`[migrations] ALLOWED_HOST_LIST`和`BLOCKED_HOST_LIST`。
感谢**[@TheFox0x7](https://github.com/TheFox0x7)**为这项变更做出的贡献。
已完成的 Actions 运行现在默认在**400 天**后被删除,包括其作业、日志和产物。新的`cleanup_action_runs`定时任务负责删除它们,默认在午夜执行。若要保留所有运行记录,请**升级前**设置:
```
[actions]
RUN_RETENTION_DAYS = 0
```
`0`现在对`RUN_RETENTION_DAYS`、`LOG_RETENTION_DAYS`和`ARTIFACT_RETENTION_DAYS`表示"永久保留"。日志和产物始终与其所属的运行记录一同删除。
感谢**[@facorazza](https://github.com/facorazza)**为这项变更做出的贡献。
Gitea 现在拒绝启动版本低于**2.25.0**的 Git。如果你自行安装了 Git,请在升级前检查`git --version`。
感谢**[@silverwind](https://github.com/silverwind)**为这项变更做出的贡献。
### ⚠️ 自注册默认关闭且`[server] DOMAIN`被忽略([#39400](https://github.com/go-gitea/gitea/pull/39400))
[章节标题:"⚠️ 自注册默认关闭且 [server] DOMAIN 被忽略(#39400)"](https://blog.gitea.com/release-of-28.0.0/#%EF%B8%8F-self-registration-is-off-by-default-and-server-domain-is-ignored-39400)
- 自注册现在默认被禁用,除非显式设置`[service] DISABLE_REGISTRATION = false`。
- Gitea 不再读取`[server] DOMAIN`。实例域名(包括默认的 SSH 域名)现在来自`ROOT_URL`,如果你之前依赖`DOMAIN`,请设置`ROOT_URL`。
感谢**[@wxiaoguang](https://github.com/wxiaoguang)**为这项变更做出的贡献。
- 作业级的`if:`现在在矩阵展开之前求值,且只能使用`github`、`gitea`、`needs`、`vars`和`inputs`上下文。请将`matrix`条件移到`strategy.matrix.include`/`exclude`或步骤级的`if:`中。
- 矩阵的`fail-fast`现在会被强制执行,一个失败的作业可以取消其余的组合。设置`strategy.fail-fast: false`可以让所有组合都执行完成。
- 公共仓库中的工作流不再能调用私有仓库中的可复用工作流,嵌套工作流也不能超出调用方的令牌权限。
感谢**[@silverwind](https://github.com/silverwind)**为这些变更做出的贡献。
## 主要亮点(管理)
章节标题:"主要亮点(管理)"(https://blog.gitea.com/release-of-28.0.0/#major-highlights-administration)
管理员现在可以模拟某个用户的身份,以该用户的视角查看 Gitea,这有助于在无需索要用户密码的情况下复现访问问题。会话中会显示一个横幅,点击可返回管理员账户。在该会话中进行的所有操作都以被模拟用户的身份执行,且在启用审计日志时,事件会同时记录两个账户。
带有标识横幅和退出按钮的被模拟用户会话。
感谢**[@wxiaoguang](https://github.com/wxiaoguang)**和**[@bircni](https://github.com/bircni)**为这些改进做出的贡献。
Gitea 现在可以记录安全相关事件,并在管理、组织、仓库和用户设置中展示它们。事件可按操作者、操作和来源进行筛选,管理员可以将其导出为 JSONL。审计日志**默认关闭**。可通过以下方式启用:
```
[audit]
RECORD_OUTPUT = database
```
事件默认保留 30 天。可通过`[audit] RETENTION_DAYS`修改,其中`0`表示永久保留。
带有事件详情的审计日志。
感谢**[@bircni](https://github.com/bircni)**为这一功能做出的贡献。
新增的`[redis]`配置节可设置一个`CONN_STR`作为缓存、会话、队列、全局锁和 WebSocket 发布/订阅的默认连接字符串。它适用于已配置为使用 Redis 但未设置各自连接字符串的子系统。
```
[redis]
CONN_STR = redis://127.0.0.1:6379/0
```
感谢**[@mohammad-rj](https://github.com/mohammad-rj)**和**[@wxiaoguang](https://github.com/wxiaoguang)**为这一功能做出的贡献。
机器人账号专为自动化而设计。它们通过访问令牌进行认证,无法交互式登录,也不会收到通知或邮件。管理员可以从管理界面、API 或 CLI 创建机器人、管理其令牌,并在符合条件的本地账户之间进行用户与机器人的转换。
在管理界面中创建机器人账号。
感谢**[@joestump](https://github.com/joestump)**和**[@bircni](https://github.com/bircni)**为这一功能做出的贡献。
通知计数、秒表更新和登出事件现在使用位于`/-/ws`的 WebSocket,而不再使用`/user/events`上的服务器发送事件(SSE)。反向代理必须转发 WebSocket 升级请求头,否则通知计数和秒表更新将回退为轮询。运行多个 Gitea 进程的部署需要设置`[websocket] PUBSUB_TYPE = redis`并配置 Redis 连接。`[ui.notification] EVENT_SOURCE_UPDATE_TIME`设置已被移除。
感谢**[@mohammad-rj](https://github.com/mohammad-rj)**为这项变更做出的贡献。
## 主要亮点(代码与协作)
章节标题:"主要亮点(代码与协作)"(https://blog.gitea.com/release-of-28.0.0/#major-highlights-code--collaboration)
部署令牌是 SSH 部署密钥的 HTTPS 对应物。每个令牌限定作用于单个仓库,拥有只读或读写权限,并可作为 HTTPS 上 Git 和 LFS 的密码。部署令牌和个人访问令牌([#38907](https://github.com/go-gitea/gitea/pull/38907))现在都可以原地重新生成。
仓库部署令牌设置。
感谢**[@ToastyTheBot](https://github.com/ToastyTheBot)**和**[@gomitrah](https://github.com/gomitrah)**为这些功能做出的贡献。
diff 文件树新增了搜索框和文件扩展名过滤器。两者都会同时缩小文件树和 diff 的范围,且扩展名过滤器会保留在 URL 中,因此过滤后的视图可以分享。
带有文件搜索和扩展名过滤的 diff 侧边栏。
感谢**[@McMichalK](https://github.com/McMichalK)**、**[@silverwind](https://github.com/silverwind)**和**[@wxiaoguang](https://github.com/wxiaoguang)**为这一功能做出的贡献。
分支保护新增了一个选项,要求每条匹配的`CODEOWNERS`规则都必须由其代码所有者之一或所列团队的成员批准后才能合并。
感谢**[@Naxdy](https://github.com/Naxdy)**、**[@bircni](https://github.com/bircni)**和**[@wxiaoguang](https://github.com/wxiaoguang)**为这一功能做出的贡献。
关注按钮现在是一个菜单,包含**参与和提及**、**所有活动**、**忽略**和**自定义**。**自定义**可为议题、Pull Request 和发布中的任意组合添加通知。这些选择同时适用于界面通知和邮件通知。
感谢**[@schonwetter](https://github.com/schonwetter)**为这一功能做出的贡献。
仓库名称旁新增了一个下拉菜单,可在同一所有者的仓库之间搜索和切换。
感谢**[@bircni](https://github.com/bircni)**为这一功能做出的贡献。
模板仓库可以在`.gitea/template`的`[exclude]`节中列出文件和目录,使它们不被包含在生成的仓库中。
感谢**[@paarth-k2002](https://github.com/paarth-k2002)**为这一功能做出的贡献。
`Fixes: #123`之类的关闭引用现在也可以关闭 Pull Request,而不仅限于议题。
感谢**[@silverwind](https://github.com/silverwind)**为这一改进做出的贡献。
仓库现在可以将 Gitea 内置议题与外部问题追踪器结合使用,只要后者的引用采用字母数字或正则表达式格式(例如`JIRA-123`)。请将外部追踪器 URL 留空,否则议题选项卡仍会跳转到外部追踪器。
感谢**[@breken-ai](https://github.com/breken-ai)**为这一改进做出的贡献。
Gitea 现在可以识别按 SPDX 标识符命名的 REUSE 风格许可证文件,并展示每个检测到的许可证及其文件链接。
感谢**[@TheFox0x7](https://github.com/TheFox0x7)**为这一功能做出的贡献。
## 主要亮点(Actions)
章节标题:"主要亮点(Actions)"(https://blog.gitea.com/release-of-28.0.0/#major-highlights-actions)
新的队列视图先列出正在运行的作业,然后按 runner 拾取它们的顺序列出等待中的作业。管理员可获得带有所有者、仓库和状态筛选器的实例级视图,而每个仓库在 Actions 选项卡中有自己的队列。两个视图都会原地刷新。
包含排队作业的 Actions 构建队列。
感谢**[@bircni](https://github.com/bircni)**为这一功能做出的贡献。
Actions 运行列表现在会自动刷新,浏览器标签页在后台时除外。
感谢**[@SudhanshuMatrix](https://github.com/SudhanshuMatrix)**为这一功能做出的贡献。
Actions 运行视图现在可以浏览产物,并预览文本、图像、PDF 以及生成的 HTML(如测试报告)。预览需要登录且对该运行具有读取权限。HTML 预览运行在沙箱化的框架中。ZIP 下载仍然可用。`[actions] ARTIFACT_PREVIEW_MAX_SIZE`默认将预览限制为最大 10 MiB 的产物,`0`禁用预览,`-1`则取消限制。单个文件还受`[ui] MAX_DISPLAY_FILE_SIZE`限制。
Actions 产物文件浏览器与预览。
感谢**[@bircni](https://github.com/bircni)**为这一功能做出的贡献。
作业矩阵现在可以基于先前作业的输出构建,且`strategy.max-parallel`可限制同时运行的矩阵作业数量。诸如`runs-on`之类的属性可以依赖`needs`,并在这些作业完成后解析。`uses:`接受`self:`来引用同一实例上的 Actions 和工作流,可复用工作流调用还接受`$/`表示同一仓库([#38822](https://github.com/go-gitea/gitea/pull/38822))。推送无效的工作流文件现在会创建一个失败的运行,并显示错误信息。
感谢**[@ZPascal](https://github.com/ZPascal)**和**[@silverwind](https://github.com/silverwind)**为这些改进做出的贡献。
## 主要亮点(API 与软件包)
章节标题:"主要亮点(API 与软件包)"(https://blog.gitea.com/release-of-28.0.0/#major-highlights-api--packages)
新增 REST 端点可在仓库、组织和用户级别管理项目看板。
感谢**[@silverwind](https://github.com/silverwind)**为这一功能做出的贡献。
新增 Actions 端点可管理工作流运行、获取其日志以及强制取消它们。
感谢**[@rossigee](https://github.com/rossigee)**和**[@Zettat123](https://github.com/Zettat123)**为这些改进做出的贡献。
npm 注册表支持`npm deprecate`、更丰富的版本元数据以及单版本 API。Helm charts 现在可以随证明文件(provenance files)一同上传,站点管理员可以通过一个新 API 列出所有软件包。
感谢**[@philip-x-rutkowski-intel-com](https://github.com/philip-x-rutkowski-intel-com)**、**[@silverwind](https://github.com/silverwind)**、**[@TheFox0x7](https://github.com/TheFox0x7)**和**[@lunny](https://github.com/lunny)**为这些改进做出的贡献。
- BREAKING - Fix(git)!: 通过内部代理路由 Git 网络操作并更新出站设置([#39426](https://github.com/go-gitea/gitea/pull/39426))
- Feat(actions)!: 新增 RUN_RETENTION_DAYS 以删除旧的 action 运行记录([#38855](https://github.com/go-gitea/gitea/pull/38855))
- Refactor:"安装"页面([#39400](https://github.com/go-gitea/gitea/pull/39400))
- Chore:将最低 Git 版本提升至 2.25([#39131](https://github.com/go-gitea/gitea/pull/39131))
- SECURITY - Fix(git):推送时拒绝无效和重复的 Git 对象([#39472](https://github.com/go-gitea/gitea/pull/39472))
- Fix(git)!: 通过内部代理路由 Git 网络操作并更新出站设置([#39426](https://github.com/go-gitea/gitea/pull/39426))
- Fix(ssh):通过指纹识别所提供的公钥([#39423](https://github.com/go-gitea/gitea/pull/39423))
- Fix(actions):将已取消和未获批准的 fork PR 运行记录保留在审批门之后([#39399](https://github.com/go-gitea/gitea/pull/39399))
- Fix(deps):更新 golang.org/x/crypto SSH 以解决拒绝服务问题([#39219](https://github.com/go-gitea/gitea/pull/39219))
- Fix(repo):对团队访问、删除和软件包取消关联强制执行仓库范围的授权([#39063](https://github.com/go-gitea/gitea/pull/39063))
- FEATURES - Feat(actions):更新 actionslib、支持`self:`、杂项修复([#39358](https://github.com/go-gitea/gitea/pull/39358))
- Feat(api):为站点管理员列出所有软件包([#38968](https://github.com/go-gitea/gitea/pull/38968))
- Feat:管理 bo(原文截断)
相似文章
发布 v0.29.0 · warp-tech/warpgate
Warpgate v0.29.0 是一个智能堡垒主机的版本,提供对SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP和VNC等协议的透明访问,并具有会话录制、2FA、SSO和暴力破解保护等功能。
Erlang/OTP 29.0 发布
Erlang/OTP 29.0 是一个重要版本,引入了原生记录、多值推导式、改进的编译器警告,以及增强的安全默认设置(如禁用 SSH 守护进程)。此外,该版本还包含了 JIT 改进以及诸如后量子加密支持等实验性功能。
@github: Git 2.55 带来了新的增量重新打包策略、更灵活的历史编辑方式,以及更多功能。查看…
Git 2.55 已发布,引入了使用多包索引的增量重新打包策略、更灵活的历史编辑方式,以及来自超过100位贡献者的贡献。
Go 1.27 发布 - Go 编程语言
Go 1.27 已发布,包含重大增强,如泛型方法、性能改进以及新标准库特性,例如 encoding/json/v2 和后量子密码学支持。
Enlightenment 0.28.0 发布
Enlightenment 0.28.0 发布,带来了重要的 NetworkManager 网络模块、原生 PipeWire 混音器支持、剪贴板历史记录、电池充电上限、ACPI 电源配置,以及众多窗口管理和显示问题修复。