Help us learn about your current experience with the documentation. Take the survey.

GitLab 静默模式

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

静默模式允许您阻止来自 GitLab 的出站通信,例如电子邮件。静默模式不适用于正在使用的环境。两个用例如下:

  • 验证 Geo 站点提升。您拥有一个作为灾难恢复解决方案一部分的辅助 Geo 站点。作为确保灾难恢复计划切实可行的最佳实践,您希望定期测试将其提升为主 Geo 站点。但您不希望实际执行完整的故障转移,因为主站点位于为用户提供最低延迟的区域。而且您不希望在每次定期测试期间都停机。因此,您让主站点保持运行,同时提升辅助站点。您开始对提升后的站点进行冒烟测试。但是,提升后的站点会开始向用户发送电子邮件,推送镜像会将更改推送到外部 Git 仓库等。这时,静默模式就派上用场了。您可以在站点提升过程中启用它,以避免此问题。
  • 验证 GitLab 备份。您设置一个测试实例来测试您的备份是否能够成功恢复。作为恢复过程的一部分,您可以启用静默模式,例如,以避免向用户发送无效的电子邮件。

启用静默模式

前提条件:

  • 您必须拥有管理员权限。

有多种方法可以启用静默模式:

  • Web UI

    1. 在左侧边栏的底部,选择 管理员
    2. 在左侧边栏中,选择 设置 > 通用
    3. 展开 静默模式,然后切换 启用静默模式 开关。
    4. 更改会立即保存。
  • API:

    curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=true"
  • Rails 控制台:

    ::Gitlab::CurrentSettings.update!(silent_mode_enabled: true)

更改可能需要最多一分钟才能生效。议题 405433 提议移除此延迟。

禁用静默模式

前提条件:

  • 您必须拥有管理员权限。

有多种方法可以禁用静默模式:

  • Web UI

    1. 在左侧边栏的底部,选择 管理员
    2. 在左侧边栏中,选择 设置 > 通用
    3. 展开 静默模式,然后切换 启用静默模式 开关。
    4. 更改会立即保存。
  • API:

    curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=false"
  • Rails 控制台:

    ::Gitlab::CurrentSettings.update!(silent_mode_enabled: false)

更改可能需要最多一分钟才能生效。议题 405433 提议移除此延迟。

静默模式下 GitLab 功能的行为

本节记录了启用静默模式时 GitLab 的当前行为。静默模式首次迭代的工作由 Epic 9826 进行跟踪。

启用静默模式后,所有用户的页面顶部都会显示一个横幅,说明该设置已启用,并且 所有出站通信均被阻止

被静默的出站通信

以下功能的出站通信会被静默模式静默。

功能 说明
GitLab Duo GitLab Duo 功能无法联系外部语言模型提供商。
项目和群组 Webhook 通过 UI 触发 Webhook 测试会导致 HTTP 500 状态码响应。
系统钩子
远程镜像 推送到远程镜像的操作将被跳过。从远程镜像拉取的操作也将被跳过。
可执行集成 这些集成不会被执行。
服务台 传入的电子邮件仍会创建议题,但向服务台发送电子邮件的用户不会收到议题创建或其议题评论的通知。
出站电子邮件 当 GitLab 应该发送电子邮件时,该邮件会被直接丢弃,不会在任何地方排队。
出站 HTTP 请求 许多 HTTP 请求会被阻止,尤其是那些功能未被明确阻止或跳过的请求。这可能会产生错误。如果在静默模式测试期间,某个特定错误造成了问题,请咨询 GitLab 支持部门

未被静默的出站通信

以下功能的出站通信不会被静默模式静默。

功能 说明
依赖代理 拉取未缓存的镜像将照常从源获取。请注意拉取速率限制。
文件钩子
服务器钩子
高级搜索 如果两个 GitLab 实例使用同一个高级搜索实例,那么它们都可以修改搜索数据。这是一种“脑裂”场景,例如,在主 Geo 站点仍处于运行状态时提升辅助 Geo 站点后,就可能发生这种情况。
Snowplow 目前有一项提议旨在静默这些请求。
已弃用的 Kubernetes 连接 目前有一项提议旨在静默这些请求。
容器仓库 Webhook 目前有一项提议旨在静默这些请求。