diff options
author | David Heidelberg <david.heidelberg@collabora.com> | 2023-04-06 01:17:26 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-04-25 20:41:50 +0000 |
commit | 5dd68b6ba6e9a3d12dacf5b1405ccdc305e3f09f (patch) | |
tree | f90aee7ae9b4c590c748aaab2db8df27c13dbcd8 /.gitlab-ci | |
parent | 3f553c6adb8b1cfe5872bf8eb6da28d7d24f2989 (diff) | |
download | mesa-5dd68b6ba6e9a3d12dacf5b1405ccdc305e3f09f.tar.gz |
ci/lava: implement fastboot support
Based on work from Tomeu Vizoso.
Acked-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22604>
Diffstat (limited to '.gitlab-ci')
-rw-r--r-- | .gitlab-ci/lava/utils/lava_job_definition.py | 96 |
1 files changed, 81 insertions, 15 deletions
diff --git a/.gitlab-ci/lava/utils/lava_job_definition.py b/.gitlab-ci/lava/utils/lava_job_definition.py index c640f7145db..c3e1116634f 100644 --- a/.gitlab-ci/lava/utils/lava_job_definition.py +++ b/.gitlab-ci/lava/utils/lava_job_definition.py @@ -46,27 +46,84 @@ def generate_lava_yaml_payload(args) -> dict[str, Any]: # URLs to our kernel rootfs to boot from, both generated by the base # container build - deploy = { + + nfsrootfs = { + "url": f"{args.rootfs_url_prefix}/lava-rootfs.tar.zst", + "compression": "zstd", + } + + fastboot_deploy_nfs = { "timeout": {"minutes": 10}, + "to": "nfs", + "nfsrootfs": nfsrootfs, + } + + fastboot_deploy_prepare = { + "timeout": {"minutes": 5}, + "to": "downloads", + "os": "oe", + "images": { + "kernel": { + "url": f"{args.kernel_url_prefix}/{args.kernel_image_name}", + }, + }, + "postprocess": { + "docker": { + "image": "registry.gitlab.collabora.com/lava/health-check-docker", + "steps": [ + 'gzip Image', + "cat Image.gz " + args.dtb_filename + ".dtb > Image.gz+dtb", + "mkbootimg --kernel Image.gz+dtb" + + ' --cmdline "root=/dev/nfs rw nfsroot=$NFS_SERVER_IP:$NFS_ROOTFS,tcp,hard rootwait ip=dhcp init=/init"' + + " --pagesize 4096 --base 0x80000000 -o boot.img", + ], + }, + } + } + if args.kernel_image_type: + fastboot_deploy_prepare["images"]["kernel"]["type"] = args.kernel_image_type + if args.dtb_filename: + fastboot_deploy_prepare["images"]["dtb"] = {"url": f"{args.kernel_url_prefix}/{args.dtb_filename}.dtb"} + + tftp_deploy = { + "timeout": {"minutes": 5}, "to": "tftp", "os": "oe", - "kernel": {"url": f"{args.kernel_url_prefix}/{args.kernel_image_name}"}, - "nfsrootfs": { - "url": f"{args.rootfs_url_prefix}/lava-rootfs.tar.zst", - "compression": "zstd", + "kernel": { + "url": f"{args.kernel_url_prefix}/{args.kernel_image_name}", }, + "nfsrootfs": nfsrootfs, } if args.kernel_image_type: - deploy["kernel"]["type"] = args.kernel_image_type + tftp_deploy["kernel"]["type"] = args.kernel_image_type if args.dtb_filename: - deploy["dtb"] = {"url": f"{args.kernel_url_prefix}/{args.dtb_filename}.dtb"} + tftp_deploy["dtb"] = {"url": f"{args.kernel_url_prefix}/{args.dtb_filename}.dtb"} + + fastboot_deploy = { + "timeout": {"minutes": 2}, + "to": "fastboot", + "docker": { + "image": "registry.gitlab.collabora.com/lava/health-check-docker", + }, + "images": { + "boot": {"url": "downloads://boot.img"}, + }, + } + + fastboot_boot = { + "timeout": {"minutes": 2}, + "docker": {"image": "registry.gitlab.collabora.com/lava/health-check-docker"}, + "failure_retry": NUMBER_OF_ATTEMPTS_LAVA_BOOT, + "method": args.boot_method, + "prompts": ["lava-shell:"], + "commands": ["set_active a"] + } - # always boot over NFS - boot = { + tftp_boot = { "failure_retry": NUMBER_OF_ATTEMPTS_LAVA_BOOT, "method": args.boot_method, - "commands": "nfs", "prompts": ["lava-shell:"], + "commands": "nfs" } # skeleton test definition: only declaring each job as a single 'test' @@ -136,10 +193,19 @@ def generate_lava_yaml_payload(args) -> dict[str, Any]: f"lava-test-case 'mesa-ci_{args.mesa_job_name}' --shell /init-stage2.sh", ] - values["actions"] = [ - {"deploy": deploy}, - {"boot": boot}, - {"test": test}, - ] + if args.boot_method == "fastboot": + values["actions"] = [ + {"deploy": fastboot_deploy_nfs}, + {"deploy": fastboot_deploy_prepare}, + {"deploy": fastboot_deploy}, + {"boot": fastboot_boot}, + {"test": test}, + ] + else: # tftp + values["actions"] = [ + {"deploy": tftp_deploy}, + {"boot": tftp_boot}, + {"test": test}, + ] return values |