创建灰度发布(特性标帜)
About 4 min
创建灰度发布(特性标帜)
介绍如何在云眼灰度发布(特性标帜)AB实验中创建和实现灰度发布(特性标帜)。
灰度发布(特性标帜)(也称为Feature Flag)是一种软件开发技术,可让开发者在不部署新代码的情况下打开和关闭某些功能。标帜能够更好地控制功能的整个生命周期。可以关闭功能以快速发布代码,而无需将其公开给用户。还可以将其推广到一小部分用户群,以最大程度地减少发布的影响,从而允许在广泛推出之前验证功能并评估表现。
可以在一个界面中管理所有标帜。以下部分介绍如何创建、编辑和存档标帜。
创建标帜
要创建标帜,请导航到**“标帜**”>“创建新标帜...”:
- 在**“名称”**字段中,为标帜指定唯一名称。(有效键包含字母数字字符、连字符和下划线,限制为 64 个字符,并且不能包含空格。
云眼灰度发布(特性标帜)AB实验会根据此名称自动为标帜分配一个键。将使用 flag 键在应用程序代码中实现 Flag。标帜键在创建后无法更改。
(可选)输入描述。
单击创建标帜以保存新标帜。
- 云眼灰度发布(特性标帜)AB实验会自动为此标帜创建只读flag_off变体,可以在实验中将其用作控件。
- 云眼灰度发布(特性标帜)AB实验会自动创建两个环境:生产和开发。
实现灰度发布(特性标帜)
📘 注意
在实现该标帜之前,必须决定如何将用户传递到 云眼 功能实验,以便 云眼 功能实验可以为每个用户提供启用或禁用标帜的一致体验。有关更多信息,请参阅处理用户 ID。
在云眼灰度发布(特性标帜)AB实验仪表板中创建标帜后,需要将其与应用程序代码集成。使用 Decide 方法为用户启用或禁用标帜:
// Decide if user sees a feature flag variation
let user = eyeofcloud.createUserContext(userId: "user123", attributes: ["logged_in":true])
let decision = user.decide(key: "flag_1")
let enabled = decision.enabled
// Decide if user sees a feature flag variation
user := eyeofcloud.CreateUserContext("user123", map[string]interface{}{"logged_in": true})
decision := user.Decide("flag_1", nil)
enabled := decision.Enabled
# Decide if user sees a feature flag variation
user = eyeofcloud.create_user_context("user123", {'logged_in': True})
decision = user.decide("flag_1")
enabled = decision.enabled
// Decide if user sees a feature flag variation
$user = $eyeofcloud_client->createUserContext('user123', ['logged_in' => true]);
$decision = $user->decide('flag_1');
$enabled = $decision->getEnabled();
# Decide if user sees a feature flag variation
user = eyeofcloud_client.create_user_context('user123', {'logged_in' => true})
decision = user.decide('flag_1')
enabled = decision.enabled
// Decide if user sees a feature flag variation
var user = eyeofcloud.CreateUserContext("user123", new UserAttributes { { "logged_in", true } });
var decision = user.Decide(key: "flag_1");
var enabled = decision.Enabled;
// Decide if user sees a feature flag variation
EyeofcloudUserContext user = eyeofcloud.createUserContext("user123", new HashMap<String, Object>() { { put("logged_in", true); } });
EyeofcloudDecision decision = user.decide("flag_1");
Boolean enabled = decision.getEnabled();
// Decide if user sees a feature flag variation
var user = eyeofcloudClient.createUserContext('user123', { logged_in: true });
var decision = user.decide('flag_1');
var enabled = decision.enabled;
// Decide if user sees a feature flag variation
var decision = useDecision('flag_1', null, { overrideUserAttributes: { logged_in: true }});
var enabled = decision.enabled;
// Decide if user sees a feature flag variation
var decision = useDecision('flag_1', null, { overrideUserAttributes: { logged_in: true }});
var enabled = decision.enabled;
有关每个 SDK 的更详细示例,请参阅:
- 安卓示例用法
- Go 示例用法
- C# 示例用法
- Flutter示例用法
- Java 示例用法
- Javascript示例用法
- Node示例用法
- PHP 示例用法
- Python示例用法
- React示例用法
- Ruby示例用法
- Swift示例用法
调整应用程序中的集成代码。根据应用程序接收的布尔值显示或隐藏给定用户 ID 的标帜功能。
Decision方法的目标是将开发和发布代码的过程与打开标帜的决策分开。此方法返回的值由标帜规则确定。例如,如果将当前用户分配到实验中的对照组或“关闭”变体,则该方法将返回 false。
后续步骤
要交付灰度发布(特性标帜)配置,请参阅创建标帜变体。