Continuous Integration(CI) コンテキストでの GitLab テスト

CI上のテストスイート並列化

現在のCI並列化の設定は以下の通りです:

  1. prepare ステージのretrieve-tests-metadata ジョブは、knapsack/report-master.json ファイルがあることを保証します:
    • knapsack/report-master.json ファイルはS3から取得します。もしここになければ、{}でファイルを初期化します。
  2. [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の下にリストされるはずです。
  3. 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 を指定してください。

テストドキュメントに戻る