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的持续集成相关推荐

  1. 持续集成之戏说Check-in Dance

    <infoq> 众所周知,敏捷软件开发方法中有多种最佳实践,既有管理方面的,也有技术方面的.在尝试敏捷之初,并不是每个团队都能使用全部最佳实践,也不是每个实践都能在短时间内见效.但其中有一 ...

  2. 持续集成之“自动化部署”

    转自:http://www.infoq.com/cn/news/2011/07/ci-automatic-deployment 在前文<依赖管理>中,我们讨论了如何在代码变得庞大,组件增多 ...

  3. Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    Android架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持 ...

  4. iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    iOS架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署, ...

  5. centos7下Gitlab+Jenkins部署持续集成CI环境

    1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65: 内存推荐到8G,实测需要6G以上,以免出现内存不够用而报错. 2.安装git ...

  6. SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

    前言 本篇文章引导你使用Jenkins部署[SpringBoot项目],同时使用Docker和Git实现简单的持续集成和持续部署.(项目地址:sso-merryyou) 流程图如下: push代码到G ...

  7. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  8. c# 持续集成 单元测试_如何在不进行单元测试的情况下设置持续集成

    c# 持续集成 单元测试 Do you think continuous integration is not for you because you have no automated tests? ...

  9. 使用CruiseControl.Net全面实现持续集成

    持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文的主要目的是实战CruiseControl.Net,用它来全 ...

最新文章

  1. memset用法详解
  2. Linux下查看文件夹下文件个数
  3. Algorithm:C++语言实现之内排序、外排序相关算法(插入排序 、锦标赛排序、归并排序)
  4. 性能可期——Netflix与Intel优化SVT-AV1
  5. all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER
  6. Andros系列排爆机器人原理_中国製造2025系列M之二:高档数控机床和机器人
  7. HDU 4747 Mex【线段树上二分+扫描线】
  8. 计算机专业答辩开场白,毕业答辩开场白三分钟
  9. python通过文件路径读取图片
  10. 181228每日一句
  11. 110道 MySQL面试题及答案 (持续更新)
  12. MagicDraw-状态机图
  13. Latex语法学习05:代码表格的制作
  14. GO语言中中文占3个字节,英文占1个字节
  15. 基于文本检测模型检测文本框对图像进行旋转校正
  16. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
  17. win10的任务栏卡死,重启也没用的解决办法
  18. Unity 游戏多语言解决方案和字体错误解决方法的想法
  19. {转载}Circos绘图(1)
  20. 分享一个时间增加的办法

热门文章

  1. websphere、weblogic上JConsole的配置
  2. C语言#line预处理器
  3. python throw_Python 生成器与它的 send,throw,close 方法(转帖以及记录)
  4. JavaSE(四)——方法重写、多态、接口
  5. android官方夜间模式,Android夜间模式实践
  6. 格式说明_现代诗歌的写作格式是什么,能否举例说明?
  7. 个性化资源管理器软件Q-dir_6.36(附安装包)
  8. Matlab | Matlab从入门到放弃(8)——线性代数
  9. nginx mysql设置远程连接超时_nginx中的超时设置
  10. PowerBI随笔(6)-filter、caculate、RELATED相关