フィーチャーフラグ
GitLab 11.4 で導入されました。
機能フラグは、特定の機能を有効または無効にするためのトグルです。 これらのフラグは通常使用されます:
-
ボランティアによるテストは可能だが、すべてのユーザーに対して有効にする準備が整っていないベータ版機能。
ベータ版の機能は、時に不完全であったり、さらなるテストが必要であったりします。 ベータ版の機能を使用したいユーザーは、そのリスクを受け入れ、機能フラグで明示的にその機能を有効にすることができます。 その機能を必要としない、あるいはシステム上のリスクを受け入れたくない他のユーザーは、デフォルトでその機能が無効になっており、起こりうるバグやリグレッションの影響を受けません。
-
近い将来、機能が廃止されたり、機能が削除されたりするような変更。
製品の進化に伴い、機能が変更されたり、完全に削除されたりすることもあります。 既知のバグは修正されることが多いですが、場合によっては、ユーザーが影響を受けたバグの回避策をすでに見つけていることもあり、標準化されたバグ修正をユーザーに強制すると、カスタマイズした構成で別の問題が発生する可能性があります。
このような場合、機能フラグを使用して、古い動作から新しい動作にオンデマンドで切り替えます。 これにより、ユーザーは、古い動作から新しい動作へのスムーズで永続的な移行を計画する時間を与えながら、新しいバージョンの製品を採用することができます。
機能フラグは環境変数を使って切り替えます。 へ:
- 機能フラグを有効にするには、対応する環境変数を
"true"
または1
に設定します。 - 機能フラグを無効にするには、対応する環境変数を
"false"
または0
に設定します。
使用可能な機能フラグ
機能フラグ | デフォルト値 | 非推奨 | で除去します。 | 説明 |
---|---|---|---|---|
FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION
| false
| ✗ | Windowsバッチシェル使用時のエラーチェックのためにEnableDelayedExpansionを無効にします。 | |
FF_NETWORK_PER_BUILD
| false
| ✗ |
docker executorでビルドごとにDockerネットワークを作成可能。
| |
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY
| true
| ✗ |
false に設定すると、リモート Kubernetes コマンドの実行がexec を経由して行われなくなり、#4119のような問題を解決するためにattach が優先されます。
| |
FF_USE_DIRECT_DOWNLOAD
| true
| ✗ |
true に設定すると、Runner は最初の試行で GitLab 経由のプロキシではなく、すべてのアーティファクトを直接ダウンロードしようとします。 有効にすると、GitLab によって有効化されている場合、オブジェクトストレージの TLS 証明書の検証に問題があり、ダウンロードに失敗することがあります。
| |
FF_SKIP_NOOP_BUILD_STAGES
| true
| ✗ |
false に設定すると、すべてのビルドステージが実行されます。
| |
FF_SHELL_EXECUTOR_USE_LEGACY_PROCESS_KILL
| false
| ✓ | 14.0 | GitLab 13.1以前で使用されていた、SIGKILL のみを送信する古いプロセス終了を使用します。
|
パイプライン設定で機能フラグを有効化
CI変数を使って機能フラグを有効にすることができます:
-
パイプラインにあるすべてのジョブ(グローバル):
variables: FEATURE_FLAG_NAME: 1
-
一つのジョブに対して:
job: stage: test variables: FEATURE_FLAG_NAME: 1 script: - echo "Hello"
Runnerの機能フラグを有効にします。
Runnerが実行するすべてのジョブで機能を有効にするには、Runnerの設定でenvironment
変数として機能フラグを指定します:
[[runners]]
name = "ruby-2.6-docker"
url = "https://CI/"
token = "TOKEN"
limit = 0
executor = "docker"
builds_dir = ""
shell = ""
environment = ["FEATURE_FLAG_NAME=1"]