
Place the kernel and ramdisk into a place in the file server so the URL will only change when the contents also change. Also put the Mesa build into a separate tarball so the ramdisk's contents don't change every build. With proper caching in place, all devices in the same farm need only to download the mesa tarball once, saving time. As we switch to MinIO for making kernels and rootfs available to LAVA devices, we can stop using Docker to distribute them. Instead, build when needed in separate jobs that push directly to MinIO, from where LAVA devices can download them. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Acked-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5515>
51 lines
1.8 KiB
Python
Executable File
51 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
import argparse
|
|
import os
|
|
import datetime
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--template")
|
|
parser.add_argument("--pipeline-info")
|
|
parser.add_argument("--base-artifacts-url")
|
|
parser.add_argument("--mesa-url")
|
|
parser.add_argument("--device-type")
|
|
parser.add_argument("--kernel-image-name")
|
|
parser.add_argument("--kernel-image-type", nargs='?', default="")
|
|
parser.add_argument("--gpu-version")
|
|
parser.add_argument("--boot-method")
|
|
parser.add_argument("--lava-tags", nargs='?', default="")
|
|
parser.add_argument("--env-vars", nargs='?', default="")
|
|
parser.add_argument("--deqp-version")
|
|
parser.add_argument("--ci-node-index")
|
|
parser.add_argument("--ci-node-total")
|
|
args = parser.parse_args()
|
|
|
|
env = Environment(loader = FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True)
|
|
template = env.get_template(os.path.basename(args.template))
|
|
|
|
env_vars = "%s CI_NODE_INDEX=%s CI_NODE_TOTAL=%s" % (args.env_vars, args.ci_node_index, args.ci_node_total)
|
|
|
|
values = {}
|
|
values['pipeline_info'] = args.pipeline_info
|
|
values['base_artifacts_url'] = args.base_artifacts_url
|
|
values['mesa_url'] = args.mesa_url
|
|
values['device_type'] = args.device_type
|
|
values['kernel_image_name'] = args.kernel_image_name
|
|
values['kernel_image_type'] = args.kernel_image_type
|
|
values['gpu_version'] = args.gpu_version
|
|
values['boot_method'] = args.boot_method
|
|
values['tags'] = args.lava_tags
|
|
values['env_vars'] = env_vars
|
|
values['deqp_version'] = args.deqp_version
|
|
|
|
# We need a sane date to check certificates, but don't want to wait to get
|
|
# time from the network after boot.
|
|
values['date'] = datetime.datetime.now().strftime("%Y%m%d %H%M")
|
|
|
|
f = open('lava-deqp.yml', "w")
|
|
f.write(template.render(values))
|
|
f.close()
|
|
|