Enable and disable GitLab features deployed behind feature flags
原文:https://docs.gitlab.com/ee/administration/feature_flags.html
Enable and disable GitLab features deployed behind feature flags
GitLab 采用功能标记策略在开发的早期阶段部署功能,以便可以逐步推出它们.
在使它们永久可用之前,出于多种原因 ,可以将功能部署在标志的后面,例如:
- 测试功能.
- 在功能开发的早期阶段获得用户和客户的反馈.
- 评估用户采用率.
- 评估它如何影响 GitLab 的性能.
- 在整个发行版中以较小的部分构建它.
标记后面的功能通常可以逐步推出:
- 默认情况下,该功能开始禁用.
- 该功能默认情况下处于启用状态.
- 功能标记已删除.
可以启用和禁用这些功能,以允许或禁止用户使用它们. GitLab 管理员可以访问 GitLab Rails 控制台来完成此操作.
如果您使用了某个功能并发现了错误,不正常行为或错误,那么尽快向 GitLab [提供反馈](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Docs - feature flag feedback: Feature Name&issue[description]=Describe the problem you’ve encountered.
/label ~)非常重要,这样我们就可以在标记后改进或修复它. 当您将 GitLab 升级到早期版本时,功能标志状态可能会更改.
注意:请注意,部署在功能标记后面的功能可能尚未准备好用于生产. 但是,禁用默认情况下已启用的已部署标志后面的功能也可能带来风险. 如果启用了它们,我们建议您保持原样.
How to enable and disable features behind flags
每个功能都有其自己的标志,应使用该标志来启用和禁用它. 标志后面的每个功能的文档都包括一个部分,通知标志的状态以及启用或禁用标志的命令.
Start the GitLab Rails console
启用或禁用标志后面的功能的第一件事是在 GitLab Rails 控制台上启动会话.
对于所有安装;
sudo gitlab-rails console
对于源安装:
sudo -u git -H bundle exec rails console -e production
有关详细信息,请参见启动 Rails 控制台会话 .
Enable or disable the feature
一旦启动 Rails 控制台会话,请相应地运行Feature.enable
或Feature.disable
命令. 特定标志可以在功能文档中找到.
要启用功能,请运行:
Feature.enable(:<feature flag>)
例如,启用证据收集:
Feature.enable(:release_evidence_collection)
要禁用功能,请运行:
Feature.disable(:<feature flag>)
Example, to disable Evidence Collection:
Feature.disable(:release_evidence_collection)
可以基于每个项目启用或禁用某些功能标志:
Feature.enable(:<feature flag>, Project.find(<project id>))
例如,要为项目1234
启用:junit_pipeline_view
功能标记:
Feature.enable(:junit_pipeline_view, Project.find(1234))
Feature.enable
和Feature.disable
始终返回nil
,这并不表示命令失败:
irb(main):001:0> Feature.enable(:release_evidence_collection)
=> nil
要检查标志是启用还是禁用,可以使用Feature.enabled?
或Feature.disabled?
:
Feature.enable(:release_evidence_collection)
=> nil
Feature.enabled?(:release_evidence_collection)
=> true
Feature.disabled?(:release_evidence_collection)
=> false
功能就绪后,GitLab 将删除功能标志,启用和禁用该功能的选项将不再存在,并且该功能将在所有实例中可用.