GitLab Runner機能フラグ

GitLab 11.4で導入されました。

機能フラグは、特定の機能を有効にしたり無効にしたりするためのトグルです。これらのフラグは一般的に使われます:

  • 有志がテストするために利用可能になっているが、すべてのユーザーに対して有効にする準備ができていないベータ機能の場合。

    ベータ機能は不完全であったり、さらなるテストが必要な場合があります。ベータ機能を使いたいユーザーは、そのリスクを受け入れ、機能フラグで明示的にその機能を有効にすることができます。その機能を必要としない他のユーザーや、システム上のリスクを受け入れたくないユーザーは、デフォルトでその機能が無効になっており、起こりうるバグやリグレッションの影響を受けません。

  • 近い将来、機能が廃止されたり、機能が削除されたりする可能性のある変更。

    製品の進化に伴い、機能が変更されたり、完全に削除されたりすることがあります。既知のバグが修正されることもよくありますが、場合によっては、ユーザーが影響を受けたバグの回避策をすでに見つけていることもあります。標準化されたバグ修正をユーザーに強制すると、カスタマイズした設定に別の問題が発生する可能性があります。

    このような場合、機能フラグを使うことで、オンデマンドで古い動作から新しい動作に切り替えることができます。これにより、ユーザーは、古い動作から新しい動作へのスムーズで永続的な移行を計画する時間を確保しながら、新しいバージョンの製品を採用することができます。

機能フラグは環境変数を使って切り替えます。へ:

  • 機能フラグを有効にするには、対応する環境変数を"true" または1 に設定します。
  • 機能フラグを無効にするには、対応する環境変数を"false" または0 に設定します。

利用可能な機能フラグ

機能フラグデフォルト値非推奨で削除されます。説明
FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSIONfalse {点線円}いいえ  Window BatchShell使用時のエラーチェックのEnableDelayedExpansionを無効にします。
FF_NETWORK_PER_BUILDfalse {点線円}いいえ  docker ExecutorでビルドごとにDockerネットワークを作成できるようにします。
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGYfalse {点線円}いいえ  false に設定すると、#4119のような問題を解決するために、attach を優先してexec を介した Kubernetes リモートコマンドの実行を無効にします。
FF_USE_DIRECT_DOWNLOADtrue {点線円}いいえ  true に設定すると、Runnerは最初のトライでGitLabを通してプロキシする代わりに、すべてのアーティファクトを直接ダウンロードしようとします。GitLabによって有効化されている場合、有効にするとオブジェクトストレージのTLS証明書の検証に問題があり、ダウンロードに失敗する可能性があります。自己署名証明書またはカスタム認証局を参照してください。
FF_SKIP_NOOP_BUILD_STAGEStrue {点線円}いいえ  false に設定すると、実行しても効果がない場合でも、すべてのビルドステージが実行されます。
FF_USE_FASTZIPfalse {点線円}いいえ Fastzip は、キャッシュ/アーティファクトのアーカイブと抽出のための高性能アーカイバです。
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTORfalse {点線円}いいえ 有効にすると、docker Executor で実行されるジョブのumask 0000 コールの使用を削除します。代わりに、Runnerは、ビルドコンテナで使用されるイメージに設定されたユーザーのUIDとGIDを検出しようとし、(ソースの更新、キャッシュの復元、アーティファクトのダウンロードの後に)事前定義されたコンテナでchmod コマンドを実行して、作業ディレクトリとファイルの所有者を変更します。id この機能フラグを使用 idするには、POSIX ユーティリティがid ビルドイメージにインストールされ、オペレーション可能である必要が idあります。id Runner idは、UID と GID を取得するために-u-g オプションを付けてid 実行 idします。
FF_ENABLE_BASH_EXIT_CODE_CHECKfalse {点線円}いいえ 有効にすると、Bashスクリプトはset -e にのみ依存せず、各スクリプトコマンドの実行後にゼロ以外の終了コードをチェックします。
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGYtrue {点線円}いいえ 無効にすると、RunnerがWindows上で作成するプロセス(ShellとカスタムExecutor)は、プロセスの終了を改善する追加セットアップで作成されます。これは現在実験的なものであり、プロセスのセットアップ方法は今後改善される可能性があります。true に設定すると、従来のプロセス設定が使用されます。Windows Runnerを正常かつ優雅に排出するには、この機能フラグをfalse に設定する必要があります。
FF_USE_NEW_BASH_EVAL_STRATEGYfalse {点線円}いいえ  true に設定すると、Basheval 呼び出しがサブシェル内部で実行され、実行されたスクリプトの適切な終了コード検出に役立ちます。
FF_USE_POWERSHELL_PATH_RESOLVERfalse {点線円}いいえ 有効にすると、Runnerがホストされている場所に固有のOS固有のファイルパス関数を使用して、RunnerではなくPowerShellがパス名を解決します。
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVALfalse {点線円}いいえ 有効にすると、ログのトレース強制送信間隔は、トレース更新間隔に基づいて動的に調整されます。
FF_SCRIPT_SECTIONSfalse {点線円}いいえ 有効にすると、.gitlab-ci.yml ファイルからの各スクリプト行は、ジョブ出力の折りたたみ可能なセクションに表示され、各行の期間が表示されます。
FF_USE_NEW_SHELL_ESCAPEfalse {点線円}いいえ 有効にすると、シェルエスケープの高速な実装が使用されます。
FF_ENABLE_JOB_CLEANUPfalse {点線円}いいえ 有効にすると、ビルド終了時にプロジェクトディレクトリがクリーンアップされます。GIT_CLONE を使用すると、プロジェクト・ディレクトリ全体が削除されます。GIT_FETCH を使用すると、一連の Gitclean コマンドが発行されます。
FF_KUBERNETES_HONOR_ENTRYPOINTfalse {点線円}いいえ 有効にすると、FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY がtrueに設定されていない場合、イメージのDockerエントリポイントが優先されます。
FF_POSIXLY_CORRECT_ESCAPESfalse {点線円}いいえ 有効にすると、bash-style ANSI-C quotingではなく、POSIXシェル・エスケープが使用されます。ジョブ環境がPOSIX準拠のシェルを使用している場合、これを有効にする必要があります。
FF_USE_IMPROVED_URL_MASKINGfalse {点線円}いいえ これを有効にすると、トレースログ出力のどこに表示されても、機密性の高い URL パラメータはマスクされます。これを無効にすると、機密性の高いURLパラメータは特定の場所でのみマスクされ、時折明らかになることがあります。この機能フラグはジョブからではなく、Runnerの設定によってのみ設定できます。
FF_RESOLVE_FULL_TLS_CHAINtrue {点線円}いいえ 有効にすると、Runner はCI_SERVER_TLS_CA_FILE の自己署名ルート証明書に至るまで完全な TLS チェーンを解決します。これは以前、v7.68.0以前のlibcurlとOpenSSLでビルドされたGitクライアントでGit HTTPSクローンを動作させるために必要でした。しかし、古い署名アルゴリズムで署名されたルート証明書を拒否する MacOS などの一部のオペレーションシステムでは、証明書を解決するプロセスが失敗することがあります。証明書の解決に失敗する場合は、この機能を無効にする必要があるかもしれません。この機能フラグは、[runners.feature_flags] 設定でのみ無効にできます。
FF_DISABLE_POWERSHELL_STDINfalse {点線円}いいえ 有効にすると、Shellおよびカスタムエグゼキュータ用のPowerShellスクリプトは、標準入力を介して渡され実行されるのではなく、ファイルによって渡されます。
FF_USE_POD_ACTIVE_DEADLINE_SECONDSfalse {点線円}いいえ 有効にすると、ポッドactiveDeadlineSeconds が CI/CD ジョブのタイムアウトに設定されます。このフラグはポッドのライフサイクルに影響します。
FF_USE_ADVANCED_POD_SPEC_CONFIGURATIONfalse {点線円}いいえ 有効にすると、ユーザーはconfig.toml ファイルにポッド仕様全体を設定できます。詳細については、「生成されたポッド仕様を上書きする(Alpha)」を参照してください。
FF_SET_PERMISSIONS_BEFORE_CLEANUPtrue {点線円}いいえ 有効にすると、クリーンアップ中の削除が成功するように、プロジェクト・ディレクトリ内のディレクトリとファイルの権限が最初に設定されます。
FF_SECRET_RESOLVING_FAILS_IF_MISSINGtrue {点線円}いいえ 有効にすると、値が見つからない場合に秘密の解決に失敗します。
FF_RETRIEVE_POD_WARNING_EVENTSfalse {点線円}いいえ 有効にすると、ジョブが失敗したときにポッドに関連付けられたすべての警告イベントが取得されます。

パイプライン設定で機能フラグを有効にします。

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.7-docker"
  url = "https://CI/"
  token = "TOKEN"
  limit = 0
  executor = "docker"
  builds_dir = ""
  shell = ""
  environment = ["FEATURE_FLAG_NAME=1"]

Runner設定で機能フラグを有効にします。

GitLab Runner 13.11で導入されました

機能フラグは[runners.feature_flags] で指定することで有効にすることができます。この設定によって、どのジョブも機能フラグの値を上書きすることができなくなります。

いくつかの機能フラグは、ジョブがどのように実行されるかに関係しないため、この設定を行った場合にのみ使用できます。

[[runners]]
  name = "ruby-2.7-docker"
  url = "https://CI/"
  token = "TOKEN"
  executor = "docker"
  [runners.feature_flags]
    FF_USE_DIRECT_DOWNLOAD = true