Mesa CIは、Mesaグラフィックスライブラリのビルドおよびコンプライアンス・テストスイートを実行するためのIntelの継続的インテグレーションシステムだ。200を超えるシステムで動作し、1日に数千万のテストを実行している。
Mesaプロジェクトは、OpenGLやVulkanといったグラフィックス標準のOSS実装であり、IntelおよびAMDのグラフィックスドライバの基盤として使われている。これはグラフィックスAPIとハードウェアドライバの変換レイヤーとして機能する。Mesa開発者は、継続的インテグレーション、特にテストスイートのためにMesa CIというフレームワークを使っている。Mesaは様々なバージョンのAPI標準とともに、多種多様なベンダーのグラフィックスドライバをサポートしなくてはならない。それらの機能と性能を保証するには、コミットごとに包括的なテストスイートを実行する必要がある。Mesa CIで実行しているテストスイートには、Piglit、dEQP、VK-GL-CTS、Crucibleといったものがある。最近のX Org Developer’s Conferenceにおいて、Mark Janes氏とClayton Craft氏がMesa CIについて詳しく説明した。
Mesa CIは、設定ファイル、ジョブスケジューラ、Jenkinsで動作するジョブ実装の集合だ。主にPythonで書かれており、「Mesa CIの設計で最も重要な点は、Jenkinsの設定を最小限にすることだ」という原則で進められている。ドキュメントによると、理論上、Mesa CIはJenkinsだけでなく任意のCIインフラストラクチャ上で動かせるという。現在、Mesa CIは開発者テスト、リリース検証、Intelドライバ用シミュレータにおけるプレシリコン(ハードウェア)テスト、パフォーマンステスト、コンフォーマンス・テストスイートでの検証に使われている。たとえmasterブランチへのコミットにより数百万のテストが開始したとしても、通常の開発者テストの所要時間は30分だ。カスタムデータベースはテスト履歴への即時アクセスを提供し、システムはよくあるベンチマークのパフォーマンス・トレンドグラフも生成する。
Mesa CIは2014年に始まったが、自動テストの利点はそれ以前から理解されていた。以来、リリースプロセスはフォーマルなものへ進化してきた (PDF)。Janes氏は以前の記事 (PDF)で、Mesaの継続的インテグレーション・セットアップの背景にある哲学を述べている。そこでは、テストをファーストクラスの成果物とすること、テストの信頼性と実行時間を優先すること、が挙げられている。
画像許諾 - https://xdc2018.x.org/slides/Mesa_Continuous_Integration_at_Intel.pdf
プラットフォームごとに個別のCI設定ファイルを持ち、一部テストスイートは32ビットビルド用の個別設定を必要とする。コミットによってテストが失敗すると、一部手動を含む一連のステップがトリガーされる。失敗したテストはCI設定のスキップリストに追加される。しかし、これは開発者によって行われるものではなく、テストフレームワークがアノテーションによりこれらテストケースを無視する手段を持っていないためなのかは不明だ。この機能はJUnitやNUnitといったテストスイートで利用できる。スキップリストにあるテストは引き続き実行されるが、失敗しても報告されない。これにより、バグが修正されるまでテストカバレッジが失われることを回避している。
特定のバグ修正を含んでいないブランチでフィーチャーを開発している場合、CI設定はmasterブランチを追跡しているため、そのビルドは失敗するだろう。Mesa CIはテストステータスが変化するたびに、その要因となったコミットを記録する。この場合、バグ修正がmasterブランチにプッシュされると、テストがパスするようになった時点のコミットidが記録される。Mesa CIはフィーチャーブランチが修正されているかチェックする。修正されていない場合、テストステータスがおかしい、すなわちテストが失敗することが期待されると判断する。最終的に、古いstableブランチは、そのブランチのソースコードにふさわしいテストステータスのCI設定を持つようにMesa CIで実行される。しかし、ハードウェアアップデートのある古いブランチに対して、テストはテストマシン上で失敗する可能性がある。そうしたアップデートはすべてのブランチに影響を及ぼすためだ。
Mesa CIの今後の計画には、ビルド実行中のコンポーネントのログおよびステータスの表示、開発者によるビルドのA/Bテスト実行が含まれている。パブリックダッシュボードも利用できる。
Rate this Article
- Editor Review
- Chief Editor Action