3了解 Yocto 项目自动构建器
目录
3.3.3 Autobuilder Worker Janitor
3.1 Autobuilder内的执行流程
“a-full”和“a-quick”目标是进入 Autobuilder 的常用入口点,从那里开始通过系统跟踪流程是有意义的。这最好从 Autobuilder 控制台视图 ( https://autobuilder.yoctoproject.org/typhoon/#/console ) 中可视化。
该视图顶部的每个项目代表一些“目标构建”,这些目标都是并行运行的。“完整”构建将触发其中的大部分,“快速”构建将触发其中的一些子集。Autobuilder 在单独的 buildbot 工作器上有效地运行为每个目标定义的任何配置。要了解配置,您需要查看存储库中的config.json
文件条目yocto-autobuilder-helper
。目标在“覆盖”部分定义,一个简单的例子可能是 qemux86-64,它看起来像:
"qemux86-64" : {
"MACHINE" : "qemux86-64",
"TEMPLATE" : "arch-qemu",
"step1" : {
"extravars" : [
"IMAGE_FSTYPES:append = ' wic wic.bmap'"
]
}
},
为了扩展它,您需要“模板”部分中的“arch-qemu”条目,如下所示:
"arch-qemu" : {
"BUILDINFO" : true,
"BUILDHISTORY" : true,
"step1" : {
"BBTARGETS" : "core-image-sato core-image-sato-dev core-image-sato-sdk core-image-minimal core-image-minimal-dev core-image-sato:do_populate_sdk",
"SANITYTARGETS" : "core-image-minimal:do_testimage core-image-sato:do_testimage core-image-sato-sdk:do_testimage core-image-sato:do_testsdk"
},
"step2" : {
"SDKMACHINE" : "x86_64",
"BBTARGETS" : "core-image-sato:do_populate_sdk core-image-minimal:do_populate_sdk_ext core-image-sato:do_populate_sdk_ext",
"SANITYTARGETS" : "core-image-sato:do_testsdk core-image-minimal:do_testsdkext core-image-sato:do_testsdkext"
},
"step3" : {
"BUILDHISTORY" : false,
"EXTRACMDS" : ["${SCRIPTSDIR}/checkvnc; DISPLAY=:1 oe-selftest ${HELPERSTMACHTARGS} -j 15"],
"ADDLAYER" : ["${BUILDDIR}/../meta-selftest"]
}
},
结合这两个条目,您可以看到“qemux86-64”是一个三步构建, 将在其中运行,然后针对每一步;全部用于 但具有不同的 SDKMACHINE 设置。在步骤 1 中,一个额外的变量被添加到文件中以启用 wic 图像生成。bitbake BBTARGETS
bitbake SANITYTARGETS
MACHINE="qemx86-64"
auto.conf
虽然此处并未涵盖所有细节,但您可以看到模板机制如何允许构建相当复杂的配置,同时将重复和重复保持在最低限度。
不同的构建目标被设计为允许并行化,所以不同的机器通常是并行构建的,使用相同机器的操作和元数据是顺序构建的,目的是尽可能地优化构建效率。
该config.json
文件由scripts
目录中Helper 存储库中的脚本处理。以下部分详细说明了这是如何工作的。