Intel图形库Mesa的持续集成
Mesa CI是Intel的一個持續集成系統,用于運行Mesa圖形庫的構建和一致性測試套件。它運行在200多個系統中,每天運行數千萬次測試。
\\Mesa項目是OpenGL和Vulkan等圖形標準的OSS實現。Intel和AMD將其作為圖形驅動程序的基礎。它充當圖形API和硬件驅動程序之間的轉換層。Mesa開發人員使用一個名為Mesa CI的框架進行持續集成,特別是在他們的測試套件中。Mesa需要支持各種供應商圖形驅動程序以及不同版本的API標準。這就需要一個全面的測試套件,它需要與每個提交一起運行,以確保功能和性能。Piglit、dEQP、VK-GL-CTS和Crucibleare是一些在Mesa CI上運行的測試套件。在最近的X Org開發者大會上,Mark Janes和Clayton Craft分享了一些關于Mesa CI的細節。
\\Mesa CI包括一組配置文件和一個可以在Jenkins上運行的作業調度器及作業實現。它主要是用Python編寫的,其原則是“把最小化Jenkins中的配置作為Mesa CI最重要的設計考慮”。根據文檔,Mesa CI理論上可以運行在任何CI基礎設施之上,而不僅僅是Jenkins。目前,它被用于開發測試、發布驗證、Intel驅動程序模擬器的投產前(硬件)測試、性能測試和一致性測試套件的驗證。典型的開發測試周轉時間是30分鐘,即使向主分支的一次提交觸發了數百萬個測試。自定義數據庫提供對測試歷史的即時訪問,系統還為公共基準測試生成性能趨勢線。
\\Mesa CI創建于2014年,但人們認識到Mesa自動化測試的好處比這要早。從那時起,發布過程就正規化了,并且一直在發展(PDF)。在之前的一篇文章(PDF)中,Janes分享了為Mesa建立持續集成的理念。將測試作為一等工件,其中包括對測試可靠性和運行時間進行優先級排序。
\\?
\\圖片來源:https://xdc2018.x.org/slides/Mesa_Continuous_Integration_at_Intel.pdf
\\每個平臺都有一個單獨的CI配置文件,一些測試套件需要一個單獨的配置用于32位構建。由提交引起的測試失敗會觸發一系列步驟,其中一些是手動的。失敗的測試被添加到CI配置的跳過列表中。不過,這并不是由開發人員完成的,也不知道這是否是因為測試框架沒有注解測試用例而導致它們被忽略了。JUnit和NUnit等常見測試套件都提供了這個特性。跳過列表中的測試仍然運行,但失敗時不會報告。這可以避免在Bug修復之前損失測試覆蓋率。
\\當在包含未修復的Bug的分支上開發特性時,由于CI配置會跟蹤主分支,所以會導致構建失敗。對于每個測試狀態更改,Mesa CI都會記錄導致這種情況的提交。在這種情況下,由于Bug修復會被推送到主分支,所以當測試開始通過時,它會記錄提交id。Mesa CI會檢查特性分支是否已經修復。如果沒有,它就認為測試狀態是錯誤的,即預計測試會失敗。最終,舊的穩定分支會在Mesa CI上運行,因為它們具有與該分支上的源代碼一致的測試狀態CI配置。但是,對于舊的分支,測試仍然會失敗,測試機器上有硬件更新,而這些更新會影響所有分支。
\\Mesa CI的未來計劃包括在構建執行期間顯示日志和組件的狀態,并允許開發人員對構建進行A/B比較。他們還可以使用公共儀表板。
\\查看英文原文:Continuous Integration at Intel for the Mesa Graphics Library
總結
以上是生活随笔為你收集整理的Intel图形库Mesa的持续集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十年磨一剑!SACC带你领略企业大数据平
- 下一篇: Abp框架之执行Update-Datab