成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sentry 開發者貢獻指南-Feature Flag

開發 前端
功能 flag 在 Sentry 的代碼庫中聲明。對于自托管用戶,這些標志然后通過 sentry.conf.py 進行配置。對于 Sentry 的 SaaS 部署,Flagr 用于在生產中配置標志。

本文轉載自微信公眾號「黑客下午茶」,作者為少。轉載本文請聯系黑客下午茶公眾號。

功能 flag 在 Sentry 的代碼庫中聲明。對于自托管用戶,這些標志然后通過 sentry.conf.py 進行配置。對于 Sentry 的 SaaS 部署,Flagr 用于在生產中配置標志。

您可以通過查看 sentry/features/__init__.py 找到可用的功能列表。它們在 FeatureManager 上聲明如下:

  1. # Don't set entity_feature, or set it to False if you don't plan to use Flagr 
  2. default_manager.add("organizations:onboarding", OrganizationFeature, entity_feature=True

該功能可以在你的 sentry.conf.py 中使用以下內容啟用,通常位于 ~/.sentry/:

  1. SENTRY_FEATURES["organizations:onboarding"] = True 

您可以使用 context manager 修改測試中功能 flag的狀態。

  • https://develop.sentry.dev/testing/#setting-options-and-feature-flags

創建新的 Feature Flag

確定功能應該具有的范圍

功能可以按 organization 和 project 劃分范圍。如果您不確定是否需要 project 功能,請創建一個 organization 級別。在此示例中,我們將構建一個名為 test-feature 范圍在 organization 級別的功能。

將您的功能添加到 server.py

conf/server.py 包含應用程序中的許多默認設置。在這里,您將添加您的功能,并決定它應該保持什么默認值,除非用戶指定。

  • https://github.com/getsentry/sentry/blob/master/src/sentry/conf/server.py

SENTRY_FEATURES 字典包含應用程序中的所有功能及其相應的范圍。默認情況下,您的功能應處于禁用狀態:

  1. SENTRY_FEATURES = { 
  2.     'organizations:test-feature'False
  3.     'auth:register'True
  4.     # ... 
  5.     'projects:minidump'False

將您的功能添加到 FeatureManager

FeatureManager 處理應用程序功能。我們將所有功能添加到 FeatureManager, 包括我們要添加到文件 /src/sentry/features/__init__.py 中的功能類型。

如果您計劃在生產中使用 flagr, 請在添加功能時添加第三個可選布爾參數,例如:

  • https://develop.sentry.dev/feature-flags/#enabling-your-feature-in-production
  1. default_manager.add('organizations:test-feature', OrganizationFeature, True

如果您不打算使用 flagr,請不要傳遞這第三個參數,例如:

  1. default_manager.add('organizations:test-feature', OrganizationFeature) 

將其添加到 Organization Model Serializer

Organization model serializer (src/sentry/api/serializers/models/organization.py) 構建了一個名為 feature_list 的列表,供前端使用。默認情況下,檢查所有功能,并將存在的功能添加到列表中。如果您的功能需要額外的自定義邏輯,則必須更新 organization serializer

使用 Model Flag(不太常見)

有時 model 上的 flag 用于指示 feature flag,如下所示。除非有特定原因需要更改 model,否則不建議這樣做。例如,require_2fa flag 會影響后端的行為以強制執行 two-factor 身份驗證。

  1. feature_list = [] 
  2.  
  3. if getattr(obj.flags, 'allow_joinleave'): 
  4.     feature_list.append('open-membership'
  5. if not getattr(obj.flags, 'disable_shared_issues'): 
  6.     feature_list.append('shared-issues'
  7. if getattr(obj.flags, 'require_2fa'): 
  8.     feature_list.append('require-2fa'

檢查您的功能

在 Python 代碼中

FeatureManager 的 has 方法檢查該功能是否存在。 has 方法接收該功能的名稱,即與該功能范圍對應的對象 (即組織級別功能的組織或項目級別功能的項目) 和 actor(又名 user)。在我們的例子中,該功能將添加如下:

  1. if features.has('organizations:test-feature', obj, actor=user): 
  2.     feature_list.append('test-feature'

如果為 organization 和給定的 user 類型啟用了該功能, 則只會將該 feature 添加到 feature_list 中。請注意,當我們將 feature 提供給前端時,我們刪除了 scope 前綴, 我們的 'organizations:test-feature' 變成了 'test-feature'。

在 JavaScript 中

在 Sentry 和 GetSentry 中使用 flag 是有區別的。在這個階段,您還沒有準備好在 GetSentry 中使用您的 feature flag,但您可以在 Sentry 中使用它。

帶有 Feature 組件的聲明性功能

React 使用聲明式編程范式。因此,我們有一個 utility 組件,用于根據 organization/project 可用的 feature 標志隱藏組件

  1. import Feature from 'app/components/acl/feature'
  2.  
  3. const toRender = ( 
  4.   <Feature features={['test-feature']}> 
  5.     <MyComponentToFlag /> 
  6.   </Feature> 
  7. ); 

命令式功能 flag 檢查

強制生成 React 組件時有一些例外(例如表的標題/列)。在這樣的情況下,Organization / Project 對象有一個 feature flag 數組, 您可以通過以下方式使用它們:

  1. const {organization} = this.props; 
  2.  
  3. // Method 2 
  4. organization.features.includes('test-feature'); // evals to True/False 

在開發中啟用功能

在 Sentry 中,您可以運行 sentry devserver 來查看您在開發模式下的更改。如果您想查看 feature flag 背后的更改,則需要在本地計算機上打開文件 ~/.sentry/sentry.config.py。此文件包含 sentry 應用程序的本地設置,可以查看和編輯。如果您想打開或關閉 flag,請將其添加到您的配置文件中:

  1. SENTRY_FEATURES['organizations:test-feature'] = True 

其中,SENTRY_FEATURES 將對應于 step 2 中的 SENTRY_FEATURES。如果您希望該功能可用,請將其設置為 True,否則設置為 False。

開發中的 Flagr(Sentry SaaS)

通常,您不需要在開發中運行 flagr 來測試您的功能標記。如果您確實想運行 flagr,則需要運行 getsentry:

  • 設置環境變量:export SENTRY_USE_FLAGR=true
  • 啟動你的 devservices

您可以在 localhost:18000 找到您本地的 flagr 實例

  • https://develop.sentry.dev/sentry-vs-getsentry/
  • https://develop.sentry.dev/services/devservices/

在生產中啟用您的功能(Sentry SaaS)

功能 flag 在 Sentry 的代碼庫中聲明。對于自托管用戶,這些 flag 然后通過 sentry.conf.py 進行配置。對于 Sentry 的 SaaS 部署,Flagr 用于在生產中配置 flag。

如果您想為一部分生產用戶啟用您的功能,您需要在 Flagr 中設置您的功能。如果您尚未確保在 sentry 中添加 flag 時您通過了第三個選項,以便 Flagr 知道在生產中檢查此功能。

  1. default_manager.add("organizations:onboarding", OrganizationFeature, True)  # NOQA 

 

責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2022-01-17 19:34:43

SentryWeb APISentry API

2022-01-18 23:26:45

開發

2022-01-15 23:33:47

SentryPyCharm配置

2022-01-02 23:26:08

開發SDK Sentry

2021-12-15 20:06:48

ReactJSSentry開發者

2022-01-21 21:33:03

開發JavaScript應用

2021-12-25 22:31:55

Sentry 監控SDK 開發 性能監控

2022-01-16 22:16:59

數據庫Sentry開發者

2022-01-13 20:13:31

元宇宙搜索引擎

2022-01-03 22:59:30

開發SDK數據

2021-12-31 18:35:40

監控Sentry開發

2022-01-02 06:59:43

SentrySDK 開發客戶端報告

2022-01-19 19:49:53

Sentry瀏覽器SDK

2021-12-16 20:12:37

后端開發Sentry

2022-01-20 19:49:10

Sentry開發Scope

2021-12-17 19:15:51

前端蟲洞狀態

2015-07-22 16:08:46

OpenStack開源貢獻代碼

2018-03-27 23:25:40

Paddle

2024-02-01 09:37:42

Kubernetes服務網格? 命令

2019-08-16 10:55:37

開發者技能AI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产不卡在线 | 男女精品网站 | 国产一区二区三区精品久久久 | 欧美成人激情 | 精品91久久 | 操久久久| 天天躁日日躁狠狠躁白人 | 日韩av一区二区在线 | 国产视频一区二区 | 欧美日韩久久 | 99热播精品 | 国产精品1区2区 | 综合色在线 | 久久午夜精品 | 国产网站在线播放 | 岛国av免费看 | a黄视频| 欧美久久视频 | 亚洲国产精品一区二区三区 | 国产95在线 | 久久成人人人人精品欧 | 成人在线视频免费看 | 午夜手机在线视频 | 欧美日韩一卡二卡 | 91亚洲精品国偷拍自产在线观看 | 日韩在线观看网站 | 亚洲精品www久久久久久广东 | 国产黄色电影 | 精品国产99| 天天草狠狠干 | 国产亚洲精品精品国产亚洲综合 | 狠狠操在线 | 欧美日韩高清在线一区 | 成人综合视频在线观看 | 欧美日韩一卡 | 午夜性色a√在线视频观看9 | 久草免费电影 | 午夜寂寞福利视频 | 成人精品一区亚洲午夜久久久 | 午夜私人影院在线观看 | 精品欧美乱码久久久久久 |