GitLab CI/CDでBencherを使用する方法
Depending on your use case, you can set up Continuous Benchmarking in GitLab CI/CD for your:
確実に、APIトークンを作成し
、続行する前にマスクされた変数 BENCHER_API_TOKEN
として設定してください!
Your Repo -> Settings -> CI/CD -> Variables -> Expand -> Add variable
に移動します。
変数キーは BENCHER_API_TOKEN
であり、変数値はあなたのAPIトークンであるべきです。
Protect variable
と Mask variable
のボックスの両方をチェックしてください。
ターゲットブランチ
統計的継続的ベンチマークの基盤となるのは、ターゲットブランチの履歴ベースラインを持つことです。 この履歴ベースラインを使用して、マージリクエストにおけるパフォーマンスの低下を検出できます。
- GitLab CI/CDファイルを作成します。
(例:
.gitlab-ci.yml
) - GitLab CI/CDジョブを作成します。
(例:
benchmark_target_branch
) - パイプラインが
main
ブランチへのpush
によってトリガーされた場合にのみ実行します。 詳細については、GitLab CI/CDのrules
ドキュメンテーションとGitLab CI/CDのあらかじめ定義された変数のドキュメンテーションをご覧ください。 (例:rules: if: ...
) - ジョブが実行される
image
を設定します。 詳細については、GitLab CI/CDのimage
ドキュメンテーションをご覧ください。 (例:image: debian:bullseye
) - 利便性のためのスクリプトを使用してBencher CLIをインストールします。
(例:
before_script: ...
) bencher run
CLI サブコマンドを使用してmain
ブランチのベンチマークを実行します。 詳細については、bencher run
CLIサブコマンドをご覧ください。 (例:bencher run
)- プロジェクトスラッグに
--project
オプションを設定します。 詳細については、--project
ドキュメントをご覧ください。 (例:--project save-walter-white-1234abcd
) - 隠された
BENCHER_API_TOKEN
環境変数に--token
オプションを設定します。 詳細については、--token
ドキュメントをご覧ください。 (例:--token "$BENCHER_API_TOKEN"
) --branch
オプションをブランチ名に設定します。 詳細については、--branch
ドキュメントをご覧ください。 (例:--branch main
)--testbed
オプションをテストベッド名に設定します。 これは、おそらくimage
で選択したマシンと一致させる必要があります。 詳細については、--testbed
ドキュメントをご覧ください。 (例:--testbed debian:bullseye
)main
ブランチ、debian:bullseye
テストベッド、およびlatency
測定基準のための閾値を設定します。- 組み込みの
latency
測定基準、bencher mock
によって生成されるものに--threshold-measure
オプションを設定します。 詳細については、--threshold-measure
ドキュメントをご覧ください。 (例:--threshold-measure latency
) - スチューデントのt検定(
t_test
)に--threshold-test
オプションを設定します。 詳細については、--threshold-test
ドキュメントをご覧ください。 (例:--threshold-test t_test
) - 最大サンプルサイズ
64
に--threshold-max-sample-size
オプションを設定します。 詳細については、--threshold-max-sample-size
ドキュメントをご覧ください。 (例:--threshold-max-sample-size 64
) - 上限境界
0.99
に--threshold-upper-boundary
オプションを設定します。 詳細については、--threshold-upper-boundary
ドキュメントをご覧ください。 (例:--threshold-upper-boundary 0.99
) - 特定された閾値のみがアクティブであるように
--thresholds-reset
フラグを設定します。 詳細については、--thresholds-reset
ドキュメントをご覧ください。 (例:--thresholds-reset
)
- 組み込みの
- アラートが生成された場合にコマンドが失敗するように
--err
フラグを設定します。 詳細については、--err
ドキュメントをご覧ください。 (例:--err
) bencher mock
によって生成されるBencher Metric Format JSON (json
)に--adapter
オプションを設定します。 詳細については、ベンチマークハーネスアダプタをご覧ください。 (例:--adapter json
)- ベンチマークコマンドの引数を指定します。
詳細については、ベンチマークコマンドをご覧ください。
(例:
bencher mock
)
マージリクエスト
マージリクエストでパフォーマンスのリグレッションをキャッチするためには、MR上でベンチマークを実行する必要があります。 以下の例は、同じ リポジトリ内のブランチにのみ使用してください。
- GitLab CI/CD ファイルを更新します。
(例:
.gitlab-ci.yml
) - GitLab CI/CD ジョブを作成します。
(例:
benchmark_mr_branch
) - パイプラインが
merge_request_event
によってトリガーされた場合に実行します。 GitLab CI/CDrules
ドキュメント と GitLab CI/CD 説明変数ドキュメント を参照して、全体像を確認してください。 (例:rules: if: ...
) - ジョブが実行される
image
を設定します。 GitLab CI/CDimage
ドキュメント を参照して、全体像を確認してください。 (例:image: debian:bullseye
) - 便利なスクリプトを使用してBencher CLIをインストールします。
(例:
before_script: ...
) bencher run
CLIサブコマンド を使用してマージリクエストブランチのベンチマークを実行します。bencher run
CLIサブコマンド を参照して、全体像を確認してください。 (例:bencher run
)--project
オプションをプロジェクトスラグに設定します。--project
ドキュメント を参照してください。 (例:--project save-walter-white-1234abcd
)--token
オプションをマスクされたBENCHER_API_TOKEN
環境変数に設定します。--token
ドキュメント を参照してください。 (例:--token "$BENCHER_API_TOKEN"
)- GitLab CI/CD 説明変数 を使用して、
--branch
オプションをMRブランチ名に設定します。--branch
ドキュメント を参照して、全体像を確認してください。 (例:--branch "$CI_COMMIT_REF_NAME"
) - MRブランチの開始ポイントを設定します:
- GitLab CI/CD 説明変数 を使用して、
--start-point
オプションをMRブランチの開始ポイントに設定します。--start-point
ドキュメント を参照して、全体像を確認してください。 (例:--start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - GitLab CI/CD 説明変数 を使用して、
--start-point-hash
オプションをMRブランチの開始ポイントのgit
ハッシュに設定します。--start-point-hash
ドキュメント を参照して、全体像を確認してください。 (例:--start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - 開始ポイントからしきい値をクローンするために
--start-point-clone-thresholds
フラグを設定します。--start-point-clone-thresholds
ドキュメント を参照して、全体像を確認してください。 (例:--start-point-clone-thresholds
) - ベンチマークデータのドリフトを防ぐため、常にMRブランチを開始ポイントにリセットするために
--start-point-reset
フラグを設定します。--start-point-reset
ドキュメント を参照して、全体像を確認してください。 (例:--start-point-reset
)
- GitLab CI/CD 説明変数 を使用して、
--testbed
オプションをテストベッド名に設定します。 これは、おそらくimage
で選択したマシンと一致する必要があります。--tested
ドキュメント を参照してください。 (例:--testbed debian:bullseye
)- アラートが発生した場合にコマンドを失敗させるために
--err
フラグを設定します。--err
ドキュメント を参照して、全体像を確認してください。 (例:--err
) bencher mock
によって生成される Bencher Metric Format JSON (json
) に--adapter
オプションを設定します。 ベンチマークハーネスアダプターadapter json を参照して、全体像を確認してください。 (例:--adapter json
)- ベンチマークコマンド引数を指定します。
ベンチマークコマンドcommand argument を参照して、全体像を確認してください。
(例:
bencher mock
)
MRがクローズされた後にMRブランチをクリーンアップするためには、GitLab APIを使用してMRのステートをクエリする別のジョブを作成することができます。
ステートがclosed
の場合、このジョブはbencher archive
コマンドを使用してMRブランチをアーカイブします。
- GitLab CI/CDファイルを更新します。
(例:
.gitlab-ci.yml
) - GitLab CI/CDジョブを作成します。
(例:
archive_mr_branch
) - パイプラインが
merge_request_event
によってトリガーされた場合に実行します。 完全な概要については、GitLab CI/CDrules
のドキュメントとGitLab CI/CDの事前定義された変数のドキュメントを参照してください。 (例:rules: if: ...
) - ジョブが実行される
image
を設定します。 完全な概要については、GitLab CI/CDimage
のドキュメントを参照してください。 (例:image: debian:bullseye
) - 便利なスクリプトを使用してBencher CLIをインストールします。
(例:
before_script: curl ...
) - GitLab APIを使用してMRのステートを確認します。
(例:
before_script: MR_STATE=$(...)
) - MRのステートが
closed
の場合、bencher archive
CLIサブコマンドを使用してMRブランチをアーカイブします。 (例:bencher archive
) - プロジェクトのスラッグに
--project
オプションを設定します。 詳細は--project
のドキュメントを参照してください。 (例:--project save-walter-white-1234abcd
) - マスクされた
BENCHER_API_TOKEN
環境変数を--token
オプションに設定します。 詳細については--token
のドキュメントを参照してください。 (例:--token "$BENCHER_API_TOKEN"
) - GitLab CI/CDの事前定義された変数を使用してMRブランチ名に
--branch
オプションを設定します。 (例:--branch "$CI_COMMIT_REF_NAME"
)
🐰 おめでとうございます!GitLab CI/CDでBencherを使用する方法を学びました!🎉