featureフラグの後ろにデプロイされたGitLab機能の有効化・無効化
GitLabはフィーチャーフラッグ戦略を採用し、開発者の早い段階でフィーチャーをデプロイし、インクリメンタルにロールアウトできるようにしました。
永続的に利用できるようにする前に、以下のような理由でフラグの後ろに機能をデプロイすることができます:
- この機能をテストするには
- 機能開発の初期段階で、ユーザーや顧客からフィードバックを得るため。
- ユーザーの採用評価
- GitLabのパフォーマンスにどのような影響を与えるかを評価するため。
- リリースの間、小分けにして作ること。
フラッグの背後にある機能は、通常、徐々に展開することができます:
- この機能はデフォルトでは無効になっています。
- この機能はデフォルトで有効になります。
- 機能フラグが削除されます。
これらの機能は、GitLab RailsコンソールにアクセスできるGitLab管理者が有効/無効に設定することができます。
ある機能を使用し、バグや誤動作、エラーを確認した場合、次のようなフィードバックが非常に重要です。 フィードバックGitLab を以前のバージョンにアップグレードすると、機能フラグのステータスが変更されることがあります。
フラッグの背後にある機能の有効化と無効化の方法
各機能には、それを有効または無効にするために使用する独自のフラグがあります。 フラグの背後にある各機能のドキュメントには、フラグの状態とそれを有効または無効にするコマンドを通知するセクションが含まれています。
GitLab Rails コンソールを起動します。
フラグの背後にある機能を有効または無効にするには、まずGitLab Railsコンソールでセッションを開始する必要があります。
オムニバス・インストール用:
sudo gitlab-rails console
ソースからのインストールの場合:
sudo -u git -H bundle exec rails console -e production
詳しくはRailsコンソールセッションの開始をご覧ください。
機能の有効化または無効化
Railsのコンソールセッションが開始したら、Feature.enable
またはFeature.disable
コマンドを適宜実行してください。具体的なフラグについては、機能のドキュメントを参照してください。
機能を有効にするには
Feature.enable(:<feature flag>)
例:Evidence Collection を有効にします:
Feature.enable(:release_evidence_collection)
機能を無効にするには
Feature.disable(:<feature flag>)
例: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は機能フラグを削除し、有効・無効のオプションは存在しなくなり、すべてのインスタンスで機能が利用できるようになります。