Continuous Integration(CI) コンテキストでの GitLab テスト
CI上のテストスイート並列化
現在のCI並列化の設定は以下の通りです:
-
prepare
ステージのretrieve-tests-metadata
ジョブは、knapsack/report-master.json
ファイルがあることを保証します:-
knapsack/report-master.json
ファイルはS3から取得します。もしここになければ、{}
でファイルを初期化します。
-
-
[rspec|rspec-ee] [unit|integration|system|geo] n m
の各ジョブはknapsack rspec
で実行され、テストのシェアは均等になるはずです:- ジョブは
knapsack/report-master.json
にアクセスできるため、うまくいきます。なぜなら、「以前のすべてのステージからのアーティファクトはデフォルトで渡される」からです。 - ジョブは独自のレポートパスを
"knapsack/${TEST_TOOL}_${TEST_LEVEL}_${DATABASE}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json"
に設定します。 - もしknapsackがそのジョブを行っているのであれば、実行されたテストファイルは
Leftover specs
ではなくReport specs
の下にリストされるはずです。
- ジョブは
-
update-tests-metadata
ジョブ(canonicalプロジェクトのスケジュールされたパイプラインでのみ実行されます)は、すべてのknapsack/rspec*_pg_*.json
ファイルを受け取り、それらをマージして1つのknapsack/report-master.json
ファイルにし、S3にアップロードします。
その後、次のパイプラインでは最新のknapsack/report-master.json
。
モニタリング
GitLabのテストスイートは、master
ブランチと、名前にrspec-profile
を含むブランチを監視しています。
公開ダッシュボードは誰でも見ることができます。 最も遅いテストファイルを見て、自由に改善してください。
CIセットアップ
- Rails の
log/test.log
へのロギングは、パフォーマンス上の理由からCI ではデフォルトで無効になっています。 この設定を上書きするには、環境変数RAILS_ENABLE_TEST_LOG
を指定してください。