Feature Flags

Feature Flags

在 GitLab 11.4 中引入 .

借助功能标志,您可以将应用程序的新功能部署到较小的批量生产中. 您可以将功能打开或关闭到部分用户,以帮助您实现持续交付. 功能标记有助于降低风险,使您能够进行受控测试,并将功能交付与客户发布分开.

有关实际使用的功能标志的示例,请参阅 .

GitLab 使用功能切换服务Unleash .

通过在 GitLab 中启用或禁用标记,您的应用程序可以确定要启用或禁用的功能.

您可以在 GitLab 中创建功能标记,并使用应用程序中的 API 来获取功能标记及其状态的列表. 必须将应用程序配置为与 GitLab 进行通信,因此,开发人员可以使用兼容的客户端库并将 .

Create a feature flag

要创建并启用功能标志:

  1. 导航到项目的” 操作”>”功能标志” .
  2. 单击新功能标志按钮.
  3. 输入一个以字母开头的名称,该名称仅包含小写字母,数字,下划线( )或破折号( - ),并且不以破折号( - )或下划线( _ )结尾.
  4. 输入描述(可选,最多 255 个字符).
  5. Enter details about how the flag should be applied:
    • 在 GitLab 13.0 和更早版本中,添加Environment specs . 对于每个环境,包括” 状态” (默认启用)和” (默认为” 所有用户” ).
    • 在 GitLab 13.1 和更高版本中,添加 Feature Flag Strategies . 对于每种策略,请包括” 类型” (默认为” )和” 环境” (默认为所有环境).
  6. Click 创建功能标志.

您可以通过单击 列表中任何功能标志旁边的(编辑)按钮.

在 GitLab 12.2 中引入 .

在 GitLab 13.0 和更早版本中,” 推出”策略设置会影响哪些用户将启用该功能. 选择要启用该功能的用户百分比. 如果禁用环境规范,则推出策略将无效.

可以设置为:

  • 全部用户
    • (可选)您可以单击” 包括其他用户 ID”复选框,并添加特定用户 ID 列表以启用该功能.
  • User IDs

Feature flag strategies

版本历史

  • 在 GitLab 13.0 中引入 .
  • 它部署在功能标记后面,默认情况下处于禁用状态.
  • 在 GitLab.com 上启用了它.
  • 要在 GitLab 自管实例中使用它,请让 GitLab 管理员 .

您可以在多个环境中应用功能标记策略,而无需多次定义策略.

GitLab 功能标志使用Unleash作为功​​能标志引擎. 在”释放”中,有用于粒度特征标志控件的 . GitLab 功能标志可以有多种策略,支持的策略有:

可以在创建功能部件标记时将策略添加到功能部件标记,也可以在后通过导航到” 操作”>”功能部件标记”并单击以编辑现有功能部件标记 (编辑).

Percent of Users

为一定百分比的已认证用户启用该功能. 它使用释放激活策略.

例如,将值设置为 15%即可为 15%的经过身份验证的用户启用该功能.

推出百分比可以从 0%到 100%.

注意:对于已登录的用户,但对于匿名用户,保证了粘性(同一用户的一致应用程序行为).警告:如果选择此策略,则必须为 Unleash 客户端提供一个用户 ID,以启用该功能. 请参见下面的Ruby 示例 .

User IDs

在 GitLab 12.2 中引入 . 为在 GitLab 12.6 中按环境定义.

为目标用户列表启用该功能. 它是使用 Unleash userWithId激活策略实现的.

输入用户 ID 作为逗号分隔的值列表. 例如, user@example.com, user2@example.comusername1,username2,username3等.

注意:用户 ID 是您的应用程序用户的标识符. 他们不必是 GitLab 用户.注意: 必须为 Unleash 客户端提供用户 ID,才能为目标用户启用该功能. 请参见下面的 .

在 GitLab 13.1 中引入 .

为使用创建的用户列表启用功能. 与相似,它使用 Unleash userWithId激活策略.

Enable or disable feature flag strategies

此功能正在开发中,但已准备好进行测试. 它部署在默认情况下禁用的功能标志的后面. 有权访问 GitLab Rails 控制台的 GitLab 管理员可以为您的实例启用它.

要启用它:

禁用它:

  1. Feature.disable(:feature_flags_new_version)

在 ,要为特定环境禁用功能标志:

  1. 导航到项目的” 操作”>”功能标志” .
  2. 对于要禁用的功能标志,请单击”铅笔”图标.
  3. 禁用标志:

    • 在 GitLab 13.0 和更低版本中:滑动环境的”状态”切换. 或者,要删除环境规范,请单击右侧的” 删除(X)”图标.
    • 在 GitLab 13.1 及更高版本:对于每一个战略,它适用于在环境 ,删除环境.
  4. Click 保存更改.

Disable a feature flag for all environments

  1. 导航到项目的” 操作”>”功能标志” .
  2. 对于要禁用的功能标志,请将状态切换滑动到禁用 .

功能标志显示在” 禁用”选项卡上.

要在应用程序中使用功能标志,请从 GitLab 获取访问凭据. 然后使用客户端库准备您的应用程序.

Get access credentials

要获取您的应用程序需要与 GitLab 通信的访问凭据:

  1. 导航到项目的” 操作”>”功能标志” .

注意:这些字段的含义可能会随着时间而改变. 例如,我们不确定实例 ID是分配给Environment 的是单个令牌还是多个令牌. 另外, 应用程序名称可以描述应用程序的版本,而不是运行环境.

GitLab 实现与 Unleash 客户端兼容的单个后端.

使用 Unleash 客户端,开发人员可以在应用程序代码中定义标志的默认值. 如果提供的配置文件中不存在该标志,则每个功能标志评估都可以表达所需的结果.

目前,Unleash 提供了许多用于各种语言和框架的 SDK .

Feature flags API information

有关 API 的内容,请参见:

Golang application example

这是一个如何在 Golang 应用程序中集成特征标记的示例:

这是一个如何在 Ruby 应用程序中集成功能标记的示例.

为 Unleash 客户端提供了一个用户 ID,以与” 百分比”卷展栏(已登录用户)卷展策略或” 目标用户”列表一起使用.

  1. require 'unleash'
  2. require 'unleash/context'
  3. unleash = Unleash::Client.new({
  4. url: 'http://gitlab.com/api/v4/feature_flags/unleash/42',
  5. app_name: 'production',
  6. instance_id: '29QmjsW6KngPR5JNPMWx'
  7. })
  8. unleash_context = Unleash::Context.new
  9. # Note that the context's user id must be a string:
  10. # https://unleash.github.io/docs/unleash_context
  11. unleash_context.user_id = "123"
  12. if unleash.is_enabled?("my_feature_name", unleash_context)
  13. puts "Feature enabled"
  14. else
  15. puts "hello, world!"
  16. end

Feature Flag Related Issues

版本历史

  • 在 GitLab 13.2 中引入 .
  • 它部署在默认情况下启用的功能标志后面.
  • 在 GitLab.com 上启用了它.
  • 不能根据项目启用或禁用它
  • 建议用于生产.

您可以将相关问题链接到功能标志. 在” 链接的问题”部分中,单击+按钮,然后输入问题参考编号或问题的完整 URL.

此功能类似于功能.

Enable or disable Feature Flag Related Issues

与功能标记相关​​的问题正在开发中,但已准备好用于生产. 它部署在默认情况下启用的功能标志的后面. 可以选择为您的实例禁用它.

To enable it:

  1. Feature.enable(:feature_flags_issue_links)