2 项目测试与发布流程
2 日常开发
本节介绍项目如何通过 Autobuilder 自动化测试与 QA 团队协作, 验证变更并最终发布版本。
项目希望在变更合入 master 分支之前,先通过测试矩阵验证。
因此,变更会分批排入主仓库的 master-next 分支,
或 poky-contrib 中的 ross/mut 等个人测试分支。
Ross Burton 参与补丁审查与测试,ross/mut 就是他的测试分支。
测试构建主要分为“完整”(full)与“快速”(quick)两类。 Autobuilder 界面中分别显示为 “a-full” 和 “a-quick”,前缀只是为了便于排序。 大多数测试相关工作可在 Autobuilder 的 控制台视图 中查看。
测试分支准备好后,由人工触发构建,并由 SWAT 团队监控。
详情见 https://wiki.yoctoproject.org/wiki/Yocto_Build_Failure_Swat_Team。
测试成功后,通常将变更合入 master;如果失败,
会有人在邮件列表中回复相关变更,说明测试失败的情况。
选择快速测试还是完整测试,取决于变更类型以及需要多快获得结果。
Autobuilder 每天会构建一次 master,首先是确保当前主干仍能构建,
同时也更新 yocto-testresults、
buildhistory 和共享状态缓存。
周末改为构建 master-next,以更新那些平时较少运行的目标的测试结果。
性能构建在控制台中以 buildperf-* 为目标名,每六小时单独触发一次,
结果会自动推送到 buildstats 仓库。
快速测试选择最容易发现问题或能提供最有价值数据的目标。
例如,它会运行耗时较短的 ptest,而不会运行耗时很长的测试。
快速目标不包含所有架构的 *-lsb 构建、部分 world 构建,
也不触发性能测试或 ltp 测试。完整构建包含这些内容,因此更慢但覆盖更全面。
2 版本发布构建
项目通常每年发布两个主要版本,间隔六个月,分别在四月和十月发布。 两个主要版本之间会有若干里程碑版本(通常四个),最后一个里程碑仅用于稳定性工作; 稳定分支还会发布维护版本。
发布构建与 日常开发 中的流程相似, 同样使用 Autobuilder 的 a-full 目标,但还要在表单中启用构建产物的生成和发布, 并填写里程碑编号、版本、候选发布编号等信息,同时勾选 “generate an email to QA”。
构建完成后,yocto-autobuilder-helper
仓库中的 send-qa-email 脚本会向该版本配置的联系人发送邮件。
发布构建产物放在 Autobuilder 的 https://valkyrie.yocto.io/pub/releases 下,
邮件中会给出目录地址。此后的流程更依赖人工操作,主要交由发布工程团队负责:
QA 团队回复邮件,说明计划执行哪些测试,以及何时提供结果。
QA 团队执行测试,将结果和发现的问题摘要放入 yocto-testresults-contrib 仓库。
发布工程团队按其流程准备发布。
QA 团队的测试结果以独立目录纳入发布产物, 并上传到 yocto-testresults, 与该修订版本的其他测试结果放在一起。
使用 resulttool 重新生成最终发布的 QA 报告,纳入新的测试结果, 并将各团队的测试摘要放在生成报告的开头。
按发布检查清单与发布就绪标准进行核对。
最终由负责监督发布就绪情况的 YP TSC 决定是否发布。