From 8c21b33d6d35b340fead795a2d0d653bf07cf644 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Tue, 3 Mar 2026 13:37:21 +0100 Subject: [PATCH 01/10] test: new script: test-new-manifests Builds all modified images for a specific distro and (host) architecture. This script is essentially the same as the generate-build-config script, only instead of generating a gitlab-ci file with the images that need to be rebuilt, it runs any required builds in sequence. On successful build, it boots the image (if supported, decided by the boot_image() function) and uploads the results. --- test/scripts/test-new-manifests | 90 +++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 test/scripts/test-new-manifests diff --git a/test/scripts/test-new-manifests b/test/scripts/test-new-manifests new file mode 100755 index 0000000000..1f6d8bed23 --- /dev/null +++ b/test/scripts/test-new-manifests @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +""" +Generate manifests for a given distribution and architecture, compare them against the CI build cache, and build and +test any images that don't have cached builds. +""" +import argparse +import os +from tempfile import TemporaryDirectory + +import imgtestlib as testlib + + +def generate_manifests(outputdir, distro, arch): + """ + Generate all manifest using the default config list and return a dictionary mapping each manifest file to the + manifest data and its ID. + """ + target = arch + distros = None + if distro: + target = distro + "/" + arch + distros = [distro] + + testlib.print_section_start("generate-all-manifests", + f"๐Ÿ—’๏ธ Generating all manifests using the default config list for {target}") + err = testlib.gen_manifests(outputdir, arches=[arch], distros=distros) + + # print stderr in case there were errors or warnings about skipped configurations + # but filter out the annoying ones + stderr = err.decode().splitlines() + for line in stderr: + if "No match for group package" in line: + continue + if "Failed to load consumer certs" in line: + continue + print(line) + + print("โœ… Manifest generation done!\n") + manifests = testlib.read_manifests(outputdir) + testlib.print_section_end("generate-all-manifests") + return manifests + + +def build_new_images(build_requests): + print(f"Building {len(build_requests)} new images") + for build in build_requests: + distro = build["distro"] + arch = build["arch"] + image_type = build["image-type"] + config = build["config"] + + config_name = config["name"] + + config_path = os.path.join(testlib.CONFIGS_PATH, config_name+".json") + testlib.build_image(distro, arch, image_type, config_path) + + build_name = testlib.gen_build_name(distro, arch, image_type, config_name) + image_search_path = os.path.join("build", build_name) + testlib.boot_image(image_search_path, config_path) + testlib.upload_results(distro, arch, image_type, config_path) + + print("โœ… DONE!") + + +def main(): + default_arch = os.uname().machine + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--distro", type=str, required=True, help="distribution for which to build images") + parser.add_argument("--arch", type=str, default=default_arch, + help="architecture for which to build images (defaults to host architecture)") + args = parser.parse_args() + + distro = args.distro + arch = args.arch + + testlib.check_config_names() + + with TemporaryDirectory() as manifest_dir: + manifests = generate_manifests(manifest_dir, distro, arch) + build_requests = testlib.filter_builds(manifests, distro=distro, arch=arch) + + if len(build_requests) == 0: + print("โšซ No manifest changes detected. Exiting.") + return + + build_new_images(build_requests) + + +if __name__ == "__main__": + main() From 04fd3e0cf9ce6d21e3ab449199b7f10bf0065aff Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Mon, 23 Mar 2026 20:26:57 +0100 Subject: [PATCH 02/10] test: new script: test-new-ostree-manifests Builds all modified images that depend on an ostree commit for a specific distro and (host) architecture. The script is essentially the same as the generate-ostree-build-config script, only instead of generating a gitlab-ci file with the images that need to be rebuilt, it runs any required builds in sequence. This is very similar to the test-new-manifests script, but it also handles discovering, downloading, and running ostree containers to serve the payload ostree commits for derived images (ostree disk images and installers). --- test/scripts/test-new-ostree-manifests | 343 +++++++++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100755 test/scripts/test-new-ostree-manifests diff --git a/test/scripts/test-new-ostree-manifests b/test/scripts/test-new-ostree-manifests new file mode 100755 index 0000000000..b21e76defb --- /dev/null +++ b/test/scripts/test-new-ostree-manifests @@ -0,0 +1,343 @@ +#!/usr/bin/env python3 +""" +Generate the ostree manifests (configs with ostree dependencies) for a given distribution and architecture, compare them +against the CI build cache, and build and test any images that don't have cached builds. +""" +import argparse +import fnmatch +import json +import os +from contextlib import contextmanager +from tempfile import NamedTemporaryFile, TemporaryDirectory + +import imgtestlib as testlib + + +def read_config_list(): + with open(testlib.CONFIG_LIST, "r", encoding="utf-8") as config_list_file: + return json.load(config_list_file) + + +def matches(name: str, filters: list[str]) -> bool: + return any(fnmatch.fnmatch(name, i) for i in filters) + + +def configs_with_deps(configs, distro=None, arch=None): + """ + Return a config list with only the config files that have dependencies. + Filter on distro and arch if specified. + """ + with_deps = [] + config_list_dir = os.path.abspath(os.path.dirname(testlib.CONFIG_LIST)) + for item in configs: + path = item["path"] + filters = item["filters"] + # load config and check if it requires an ostree commit + config_path = os.path.join(config_list_dir, path) + with open(config_path, "r", encoding="utf-8") as config_file: + data = json.load(config_file) + if not data.get("depends"): + continue + + # filter on distro and arch + distro_filters = filters.get("distros", []) + if distro_filters and distro and not matches(distro, distro_filters): + continue + arch_filters = filters.get("arches", []) + if arch_filters and arch and not matches(arch, arch_filters): + continue + + with_deps.append({"path": config_path, "filters": filters}) + + return with_deps + + +def gen_dependency_manifests(config_list, distro, arch, outputdir): + """ + Generate manifests for the dependencies of the configs in config list (ostree container manifests that serve as the + payload for ostree-based disk imasges and installers. The function generates a temporary config list that maps each + config that appears in a dependency to the dependency image type and runs gen-manifests with that config list. + + Returns a dictionary mapping manifest file name (without path) to the manifest data and its ID. + """ + target = arch + distros = None + if distro: + target = distro + "/" + arch + distros = [distro] + + print(f"๐Ÿ—’๏ธ Generating manifests for dependencies for {target}") + dep_config_list: list = [] # config list for the dependencies + gen_image_types = set() # set of all the image types to generate manifests for + + # generate a config list for the dependencies + for item in config_list: + config_path = item["path"] + with open(config_path, encoding="utf-8") as config_file: + cfg = json.load(config_file) + + dep = cfg["depends"] + image_type = dep["image-type"] + + # dependency config path can be relative to config_path: make it absolute + configs_dir = os.path.abspath(os.path.dirname(config_path)) + dep_config_path = os.path.join(configs_dir, dep["config"]) + + dep_config_list.append({"path": dep_config_path, "filters": {"image-types": [image_type]}}) + gen_image_types.add(image_type) + + # write dependency configs to temporary file and use as input to gen-manifests + with NamedTemporaryFile(mode="w") as tmpfile: + json.dump(dep_config_list, tmpfile) + tmpfile.flush() + err = testlib.gen_manifests(outputdir, config_list=tmpfile.name, + distros=distros, arches=[arch], images=gen_image_types) + # print stderr in case there were errors or warnings about skipped configurations + # but filter out the annoying ones + stderr = err.decode().splitlines() + for line in stderr: + if "No match for group package" in line: + continue + if "Failed to load consumer certs" in line: + continue + print(line) + + print("โœ… Manifest generation done!\n") + return testlib.read_manifests(outputdir) + + +def gen_image_manifests(config_list, configs, distro, arch, outputdir): + """ + Write the config list and configs to a temporary directory and generate the corresponding manifests in the output + directory. The manifest generation skips any distro + arch + image-type configuration that isn't covered by the + config list. + + Returns a dictionary mapping manifest file name (without path) to the manifest data and its ID. + """ + target = arch + distros = None + if distro: + target = distro + "/" + arch + distros = [distro] + + print(f"๐Ÿ—’๏ธ Generating manifests for ostree-based images for {target}") + with TemporaryDirectory() as tmpdir: + # write each config to a separate file + for config in configs.values(): + with open(os.path.join(tmpdir, config["name"] + ".json"), "w", encoding="utf-8") as config_file: + json.dump(config, config_file) + + # write config list in the same dir + config_list_path = os.path.join(tmpdir, "config-list.json") + with open(config_list_path, "w", encoding="utf-8") as config_list_file: + json.dump(config_list, config_list_file) + + err = testlib.gen_manifests(outputdir, config_list=config_list_path, + arches=[arch], distros=distros, commits=True, skip_no_config=True) + + # print stderr in case there were errors or warnings about skipped configurations + # but filter out the annoying ones + stderr = err.decode().splitlines() + for line in stderr: + if "No match for group package" in line: + continue + if "Failed to load consumer certs" in line: + continue + print(line) + + print("โœ… Manifest generation done!\n") + return testlib.read_manifests(outputdir) + + +def default_ref(distro, arch): + name, version = distro.split("-") + if name == "rhel": + # we use dots in our RHEL versions now + version, *_ = version.split(".") + product = "edge" + elif name == "fedora": + product = "iot" + elif name == "centos": + product = "edge" + else: + raise ValueError(f"unknown distro name {name}") + + return f"{name}/{version}/{arch}/{product}" # pylint: disable=possibly-used-before-assignment + + +@contextmanager +def setup_dependencies(manifests, config_list, distro, arch): + # pylint: disable=too-many-statements + """ + For each config in the config list, list all image configurations (distro, arch, image type) that it applies to and + use the manifests to find the corresponding manifest IDs. Pull and run the corresponding dependency container from + the registry and write a new config (and config list) that replaces the ostree options with the container URL and + port. + The config list and configs that function yields can be used to generate manifests with ostree commits resolved. + The containers are stopped when the context exits. + """ + container_ids = [] + new_config_list: list = [] + new_configs = {} + container_configs = {} + + container_ports: dict[str, int] = {} + for item in config_list: + config_path = item["path"] + filters = item["filters"] + with open(config_path, encoding="utf-8") as config_file: + config_data = json.load(config_file) + config_name = config_data["name"] + + # dependency config path is relative to config file + dep_config_path = os.path.join(os.path.dirname(config_path), config_data["depends"]["config"]) + with open(dep_config_path, encoding="utf-8") as dep_config_file: + dep_config_data = json.load(dep_config_file) + dep_config_name = dep_config_data["name"] + dep_image_type = config_data["depends"]["image-type"] + + # get all image configurations that this config applies to + distros = filters.get("distros") + if distro: + distros = [distro] + arches = [arch] + image_configs = testlib.list_images(distros=distros, arches=arches, images=filters.get("image-types")) + + distros_to_skip = [] + for skip in filters.get("skip-distros", []): + distros_to_skip.append(skip["name"]) + for image_config in image_configs: + ic_distro = image_config["distro"] + if ic_distro in distros_to_skip: + distro = image_config["distro"] + arch = image_config["arch"] + image_type = image_config["image-type"] + print(f"Skipping {distro} {arch} {image_type}: distro found in skip list") + continue + ic_arch = image_config["arch"] + ic_image_type = image_config["image-type"] + dep_build_name = testlib.gen_build_name(ic_distro, ic_arch, dep_image_type, dep_config_name) + manifest_id = manifests[dep_build_name + ".json"]["id"] + container_s3_prefix = testlib.gen_build_info_s3_dir_path(distro, arch, manifest_id) + container_s3_path = os.path.join(container_s3_prefix, "container", "container.tar") + + # start each container once on an incremental port + port = container_ports.get(container_s3_path) + if not port: + # Pulling and launching the container will fail if the specific container config was never built. This + # can happen if a dependency is specified that does not exist in the config-list. + port = 42000 + len(container_ports) + container_ports[container_s3_path] = port + + # modify image config with container address and ref + config_name = config_data["name"] + config_name = f"{config_name}-{port}" + # get the ref from the current config, or compute the default if unset + ref = config_data.get("options", {}).get("ostree", {}).get("ref", default_ref(ic_distro, ic_arch)) + new_config = { + "name": config_name, + "options": { + "ostree": { + "url": f"http://localhost:{port}/repo", + "ref": ref, + } + }, + "blueprint": config_data.get("blueprint"), + } + new_configs[config_name] = new_config + + container_configs[config_name] = { + "s3path": container_s3_path, + "port": port, + } + + config_fname = config_name + ".json" + new_config_list.append({ + "path": config_fname, + "filters": { + "distros": [ic_distro], + "arches": [ic_arch], + "image-types": [ic_image_type], + }, + }) + + try: + for container_s3_path, port in container_ports.items(): + with TemporaryDirectory() as container_dir: + print(f"โฌ‡๏ธ Downloading container archive from {container_s3_path}") + container_archive = os.path.join(container_dir, "container.tar") + testlib.runcmd_nc(["aws", "s3", "cp", "--no-progress", container_s3_path, container_archive]) + print(f"๐Ÿ“ฆ Starting container oci-archive:{container_archive} {port}") + # Running podman as root is not necessary, but currently it's failing with permission errors. + # Run it with sudo for now until we figure out the issue. + cont_id, _ = testlib.runcmd(["sudo", "podman", "run", "-d", "--rm", f"-p{port}:8080", + f"oci-archive:{container_archive}"]) + container_ids.append(cont_id.strip().decode()) + + yield new_config_list, new_configs + finally: + if container_ids: + print("๐Ÿ“ฆ Stopping containers") + out, _ = testlib.runcmd(["sudo", "podman", "stop", *container_ids]) + print(out.decode()) + + +def build_new_images(build_requests): + print(f"Building {len(build_requests)} new images") + for build in build_requests: + distro = build["distro"] + arch = build["arch"] + image_type = build["image-type"] + config = build["config"] + + config_name = config["name"] + + # The configs for these builds are generated dynamically because they depend on the local container. + # Write the config to a file for each build. + with TemporaryDirectory() as config_dir: + config_path = os.path.join(config_dir, config_name+".json") + with open(config_path, "w", encoding="utf-8") as config_file: + json.dump(config, config_file) + testlib.build_image(distro, arch, image_type, config_path) + + build_name = testlib.gen_build_name(distro, arch, image_type, config_name) + image_search_path = os.path.join("build", build_name) + testlib.boot_image(image_search_path, config_path) + testlib.upload_results(distro, arch, image_type, config_path) + + print("โœ… DONE!") + + +def main(): + default_arch = os.uname().machine + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--distro", type=str, required=True, help="distribution for which to build images") + parser.add_argument("--arch", type=str, default=default_arch, + help="architecture for which to build images (defaults to host architecture)") + args = parser.parse_args() + + distro = args.distro + arch = args.arch + + testlib.check_config_names() + + config_list = configs_with_deps(read_config_list(), distro, arch) # filtered config list: only configs with deps + + with TemporaryDirectory() as cache_root: + dep_manifest_dir = os.path.join(cache_root, "dependencies") + dep_manifests = gen_dependency_manifests(config_list, distro, arch, dep_manifest_dir) + + with setup_dependencies(dep_manifests, config_list, distro, arch) as (pull_config_list, pull_configs): + manifest_dir = os.path.join(cache_root, "manifests") + manifests = gen_image_manifests(pull_config_list, pull_configs, distro, arch, manifest_dir) + build_requests = testlib.filter_builds(manifests, distro=distro, arch=arch, skip_ostree_pull=False) + + if len(build_requests) == 0: + print("โšซ No manifest changes detected. Exiting.") + return + + build_new_images(build_requests) + + +if __name__ == "__main__": + main() From e794722fab575333fc090afc219bb3222347d09b Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Thu, 21 May 2026 16:58:16 +0200 Subject: [PATCH 03/10] test: update gitlab-ci.yml generator Update the gitlab-ci.yml generator to run the new tests. Generate the new config. --- .gitlab-ci.yml | 2126 +++++++++---------------------- test/scripts/generate-gitlab-ci | 131 +- 2 files changed, 662 insertions(+), 1595 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ad47665f14..22222af38a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,19 +1,29 @@ --- stages: - init - - gen - build - - ostree-gen - ostree-build - - verify - finish variables: - # Set the parent pipeline ID as a global variable so that the child pipeline - # jobs can use it to retrieve artifacts. - PARENT_PIPELINE_ID: $CI_PIPELINE_ID GOPROXY: "https://proxy.golang.org,direct" +.base: + before_script: + - cat schutzbot/team_ssh_keys.txt | + tee -a ~/.ssh/authorized_keys > /dev/null + interruptible: true + retry: 1 + tags: + - terraform + variables: + PYTHONUNBUFFERED: 1 + +.terraform: + extends: .base + tags: + - terraform + init: stage: init interruptible: true @@ -39,2014 +49,1094 @@ fail: - exit 1 # make the pipeline fail so it doesn't look like success when: on_failure -.base: - before_script: - - cat schutzbot/team_ssh_keys.txt | - tee -a ~/.ssh/authorized_keys > /dev/null - interruptible: true - retry: 1 - tags: - - terraform - variables: - PYTHONUNBUFFERED: 1 - -.terraform: - extends: .base +"test-images: [centos-10, aarch64]": + stage: build + extends: .terraform tags: - terraform - -"generate-build-config: [centos-10, aarch64]": - stage: gen - extends: .terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro centos-10 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro centos-10 --arch aarch64 -"generate-build-config: [centos-10, x86_64]": - stage: gen +"test-images: [centos-10, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro centos-10 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro centos-10 --arch x86_64 -"generate-build-config: [centos-9, aarch64]": - stage: gen +"test-images: [centos-9, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro centos-9 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro centos-9 --arch aarch64 -"generate-build-config: [centos-9, x86_64]": - stage: gen +"test-images: [centos-9, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro centos-9 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro centos-9 --arch x86_64 -"generate-build-config: [eln-11, aarch64]": - stage: gen +"test-images: [eln-11, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro eln-11 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro eln-11 --arch aarch64 -"generate-build-config: [eln-11, x86_64]": - stage: gen +"test-images: [eln-11, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro eln-11 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro eln-11 --arch x86_64 -"generate-build-config: [fedora-43, aarch64]": - stage: gen +"test-images: [fedora-43, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-43 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-43 --arch aarch64 -"generate-build-config: [fedora-43, x86_64]": - stage: gen +"test-images: [fedora-43, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-43 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-43 --arch x86_64 -"generate-build-config: [fedora-44, aarch64]": - stage: gen +"test-images: [fedora-44, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-44 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-44 --arch aarch64 -"generate-build-config: [fedora-44, x86_64]": - stage: gen +"test-images: [fedora-44, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-44 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-44 --arch x86_64 -"generate-build-config: [fedora-45, aarch64]": - stage: gen +"test-images: [fedora-45, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-45 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-45 --arch aarch64 -"generate-build-config: [fedora-45, x86_64]": - stage: gen +"test-images: [fedora-45, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro fedora-45 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro fedora-45 --arch x86_64 -"generate-build-config: [rhel-10.0, aarch64]": - stage: gen +"test-images: [rhel-10.0, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.0 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.0 --arch aarch64 -"generate-build-config: [rhel-10.0, x86_64]": - stage: gen +"test-images: [rhel-10.0, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.0 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.0 --arch x86_64 -"generate-build-config: [rhel-10.1, aarch64]": - stage: gen +"test-images: [rhel-10.1, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.1 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.1 --arch aarch64 -"generate-build-config: [rhel-10.1, x86_64]": - stage: gen +"test-images: [rhel-10.1, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.1 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.1 --arch x86_64 -"generate-build-config: [rhel-10.2, aarch64]": - stage: gen +"test-images: [rhel-10.2, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.2 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.2 --arch aarch64 -"generate-build-config: [rhel-10.2, x86_64]": - stage: gen +"test-images: [rhel-10.2, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.2 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.2 --arch x86_64 -"generate-build-config: [rhel-10.3, aarch64]": - stage: gen +"test-images: [rhel-10.3, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.3 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.3 --arch aarch64 -"generate-build-config: [rhel-10.3, x86_64]": - stage: gen +"test-images: [rhel-10.3, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-10.3 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-10.3 --arch x86_64 -"generate-build-config: [rhel-7.9, x86_64]": - stage: gen +"test-images: [rhel-7.9, x86_64]": + stage: build extends: .terraform + tags: + - terraform variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: aws/centos-stream-9-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-7.9 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-7.9 --arch x86_64 -"generate-build-config: [rhel-8.10, aarch64]": - stage: gen +"test-images: [rhel-8.10, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.10 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.10 --arch aarch64 -"generate-build-config: [rhel-8.10, x86_64]": - stage: gen +"test-images: [rhel-8.10, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.10 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.10 --arch x86_64 -"generate-build-config: [rhel-8.4, aarch64]": - stage: gen +"test-images: [rhel-8.4, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.4 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.4 --arch aarch64 -"generate-build-config: [rhel-8.4, x86_64]": - stage: gen +"test-images: [rhel-8.4, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.4 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.4 --arch x86_64 -"generate-build-config: [rhel-8.6, aarch64]": - stage: gen +"test-images: [rhel-8.6, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.6 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.6 --arch aarch64 -"generate-build-config: [rhel-8.6, x86_64]": - stage: gen +"test-images: [rhel-8.6, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.6 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.6 --arch x86_64 -"generate-build-config: [rhel-8.8, aarch64]": - stage: gen +"test-images: [rhel-8.8, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.8 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.8 --arch aarch64 -"generate-build-config: [rhel-8.8, x86_64]": - stage: gen +"test-images: [rhel-8.8, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-8.8 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-8.8 --arch x86_64 -"generate-build-config: [rhel-9.0, aarch64]": - stage: gen +"test-images: [rhel-9.0, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.0 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.0 --arch aarch64 -"generate-build-config: [rhel-9.0, x86_64]": - stage: gen +"test-images: [rhel-9.0, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.0 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.0 --arch x86_64 -"generate-build-config: [rhel-9.2, aarch64]": - stage: gen +"test-images: [rhel-9.2, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.2 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.2 --arch aarch64 -"generate-build-config: [rhel-9.2, x86_64]": - stage: gen +"test-images: [rhel-9.2, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.2 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.2 --arch x86_64 -"generate-build-config: [rhel-9.4, aarch64]": - stage: gen +"test-images: [rhel-9.4, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.4 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.4 --arch aarch64 -"generate-build-config: [rhel-9.4, x86_64]": - stage: gen +"test-images: [rhel-9.4, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.4 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.4 --arch x86_64 -"generate-build-config: [rhel-9.6, aarch64]": - stage: gen +"test-images: [rhel-9.6, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.6 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.6 --arch aarch64 -"generate-build-config: [rhel-9.6, x86_64]": - stage: gen +"test-images: [rhel-9.6, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.6 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.6 --arch x86_64 -"generate-build-config: [rhel-9.7, aarch64]": - stage: gen +"test-images: [rhel-9.7, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.7 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.7 --arch aarch64 -"generate-build-config: [rhel-9.7, x86_64]": - stage: gen +"test-images: [rhel-9.7, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.7 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.7 --arch x86_64 -"generate-build-config: [rhel-9.8, aarch64]": - stage: gen +"test-images: [rhel-9.8, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.8 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.8 --arch aarch64 -"generate-build-config: [rhel-9.8, x86_64]": - stage: gen +"test-images: [rhel-9.8, x86_64]": + stage: build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.8 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.8 --arch x86_64 -"generate-build-config: [rhel-9.9, aarch64]": - stage: gen +"test-images: [rhel-9.9, aarch64]": + stage: build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.9 --arch aarch64 build-config.yml - artifacts: - paths: - - build-config.yml - - -"generate-build-config: [rhel-9.9, x86_64]": - stage: gen - extends: .terraform - variables: - RUNNER: aws/fedora-44-x86_64 - INTERNAL_NETWORK: "true" - script: - - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro rhel-9.9 --arch x86_64 build-config.yml - artifacts: - paths: - - build-config.yml - -"image-build-trigger: [centos-10, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [centos-10, aarch64]" - strategy: depend - needs: - - "generate-build-config: [centos-10, aarch64]" - - -"image-build-trigger: [centos-10, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [centos-10, x86_64]" - strategy: depend - needs: - - "generate-build-config: [centos-10, x86_64]" - - -"image-build-trigger: [centos-9, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [centos-9, aarch64]" - strategy: depend - needs: - - "generate-build-config: [centos-9, aarch64]" - - -"image-build-trigger: [centos-9, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [centos-9, x86_64]" - strategy: depend - needs: - - "generate-build-config: [centos-9, x86_64]" - - -"image-build-trigger: [eln-11, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [eln-11, aarch64]" - strategy: depend - needs: - - "generate-build-config: [eln-11, aarch64]" - - -"image-build-trigger: [eln-11, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [eln-11, x86_64]" - strategy: depend - needs: - - "generate-build-config: [eln-11, x86_64]" - - -"image-build-trigger: [fedora-43, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-43, aarch64]" - strategy: depend - needs: - - "generate-build-config: [fedora-43, aarch64]" - - -"image-build-trigger: [fedora-43, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-43, x86_64]" - strategy: depend - needs: - - "generate-build-config: [fedora-43, x86_64]" - - -"image-build-trigger: [fedora-44, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-44, aarch64]" - strategy: depend - needs: - - "generate-build-config: [fedora-44, aarch64]" - - -"image-build-trigger: [fedora-44, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-44, x86_64]" - strategy: depend - needs: - - "generate-build-config: [fedora-44, x86_64]" - - -"image-build-trigger: [fedora-45, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-45, aarch64]" - strategy: depend - needs: - - "generate-build-config: [fedora-45, aarch64]" - - -"image-build-trigger: [fedora-45, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [fedora-45, x86_64]" - strategy: depend - needs: - - "generate-build-config: [fedora-45, x86_64]" - - -"image-build-trigger: [rhel-10.0, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.0, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.0, aarch64]" - - -"image-build-trigger: [rhel-10.0, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.0, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.0, x86_64]" - - -"image-build-trigger: [rhel-10.1, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.1, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.1, aarch64]" - - -"image-build-trigger: [rhel-10.1, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.1, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.1, x86_64]" - - -"image-build-trigger: [rhel-10.2, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.2, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.2, aarch64]" - - -"image-build-trigger: [rhel-10.2, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.2, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.2, x86_64]" + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.9 --arch aarch64 -"image-build-trigger: [rhel-10.3, aarch64]": +"test-images: [rhel-9.9, x86_64]": stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.3, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.3, aarch64]" - - -"image-build-trigger: [rhel-10.3, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-10.3, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-10.3, x86_64]" - - -"image-build-trigger: [rhel-7.9, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-7.9, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-7.9, x86_64]" - - -"image-build-trigger: [rhel-8.10, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.10, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.10, aarch64]" - - -"image-build-trigger: [rhel-8.10, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.10, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.10, x86_64]" - - -"image-build-trigger: [rhel-8.4, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.4, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.4, aarch64]" - - -"image-build-trigger: [rhel-8.4, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.4, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.4, x86_64]" - - -"image-build-trigger: [rhel-8.6, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.6, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.6, aarch64]" - - -"image-build-trigger: [rhel-8.6, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.6, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.6, x86_64]" - - -"image-build-trigger: [rhel-8.8, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.8, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.8, aarch64]" - - -"image-build-trigger: [rhel-8.8, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-8.8, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-8.8, x86_64]" - - -"image-build-trigger: [rhel-9.0, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.0, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.0, aarch64]" - - -"image-build-trigger: [rhel-9.0, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.0, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.0, x86_64]" - - -"image-build-trigger: [rhel-9.2, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.2, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.2, aarch64]" - - -"image-build-trigger: [rhel-9.2, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.2, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.2, x86_64]" - - -"image-build-trigger: [rhel-9.4, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.4, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.4, aarch64]" - - -"image-build-trigger: [rhel-9.4, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.4, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.4, x86_64]" - - -"image-build-trigger: [rhel-9.6, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.6, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.6, aarch64]" - - -"image-build-trigger: [rhel-9.6, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.6, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.6, x86_64]" - - -"image-build-trigger: [rhel-9.7, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.7, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.7, aarch64]" - - -"image-build-trigger: [rhel-9.7, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.7, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.7, x86_64]" - - -"image-build-trigger: [rhel-9.8, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.8, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.8, aarch64]" - - -"image-build-trigger: [rhel-9.8, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.8, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.8, x86_64]" - - -"image-build-trigger: [rhel-9.9, aarch64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.9, aarch64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.9, aarch64]" - - -"image-build-trigger: [rhel-9.9, x86_64]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [rhel-9.9, x86_64]" - strategy: depend - needs: - - "generate-build-config: [rhel-9.9, x86_64]" + extends: .terraform + tags: + - terraform/openstack + variables: + RUNNER: rhos-01/fedora-44-x86_64 + INTERNAL_NETWORK: "true" + script: + - sudo -E ./test/scripts/setup-osbuild-repo + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro rhel-9.9 --arch x86_64 -"generate-ostree-build-config: [centos-9, aarch64]": - stage: ostree-gen +"test-ostree-images: [centos-9, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro centos-9 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro centos-9 --arch aarch64 needs: - - "image-build-trigger: [centos-9, aarch64]" + - "test-images: [centos-9, aarch64]" -"generate-ostree-build-config: [centos-9, x86_64]": - stage: ostree-gen +"test-ostree-images: [centos-9, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro centos-9 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro centos-9 --arch x86_64 needs: - - "image-build-trigger: [centos-9, x86_64]" + - "test-images: [centos-9, x86_64]" -"generate-ostree-build-config: [fedora-43, aarch64]": - stage: ostree-gen +"test-ostree-images: [fedora-43, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-43 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-43 --arch aarch64 needs: - - "image-build-trigger: [fedora-43, aarch64]" + - "test-images: [fedora-43, aarch64]" -"generate-ostree-build-config: [fedora-43, x86_64]": - stage: ostree-gen +"test-ostree-images: [fedora-43, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-43 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-43 --arch x86_64 needs: - - "image-build-trigger: [fedora-43, x86_64]" + - "test-images: [fedora-43, x86_64]" -"generate-ostree-build-config: [fedora-44, aarch64]": - stage: ostree-gen +"test-ostree-images: [fedora-44, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-44 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-44 --arch aarch64 needs: - - "image-build-trigger: [fedora-44, aarch64]" + - "test-images: [fedora-44, aarch64]" -"generate-ostree-build-config: [fedora-44, x86_64]": - stage: ostree-gen +"test-ostree-images: [fedora-44, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-44 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-44 --arch x86_64 needs: - - "image-build-trigger: [fedora-44, x86_64]" + - "test-images: [fedora-44, x86_64]" -"generate-ostree-build-config: [fedora-45, aarch64]": - stage: ostree-gen +"test-ostree-images: [fedora-45, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-45 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-45 --arch aarch64 needs: - - "image-build-trigger: [fedora-45, aarch64]" + - "test-images: [fedora-45, aarch64]" -"generate-ostree-build-config: [fedora-45, x86_64]": - stage: ostree-gen +"test-ostree-images: [fedora-45, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro fedora-45 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro fedora-45 --arch x86_64 needs: - - "image-build-trigger: [fedora-45, x86_64]" + - "test-images: [fedora-45, x86_64]" -"generate-ostree-build-config: [rhel-8.10, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.10, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.10 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.10 --arch aarch64 needs: - - "image-build-trigger: [rhel-8.10, aarch64]" + - "test-images: [rhel-8.10, aarch64]" -"generate-ostree-build-config: [rhel-8.10, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.10, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.10 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.10 --arch x86_64 needs: - - "image-build-trigger: [rhel-8.10, x86_64]" + - "test-images: [rhel-8.10, x86_64]" -"generate-ostree-build-config: [rhel-8.4, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.4, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.4 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.4 --arch aarch64 needs: - - "image-build-trigger: [rhel-8.4, aarch64]" + - "test-images: [rhel-8.4, aarch64]" -"generate-ostree-build-config: [rhel-8.4, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.4, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.4 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.4 --arch x86_64 needs: - - "image-build-trigger: [rhel-8.4, x86_64]" + - "test-images: [rhel-8.4, x86_64]" -"generate-ostree-build-config: [rhel-8.6, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.6, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.6 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.6 --arch aarch64 needs: - - "image-build-trigger: [rhel-8.6, aarch64]" + - "test-images: [rhel-8.6, aarch64]" -"generate-ostree-build-config: [rhel-8.6, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.6, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.6 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.6 --arch x86_64 needs: - - "image-build-trigger: [rhel-8.6, x86_64]" + - "test-images: [rhel-8.6, x86_64]" -"generate-ostree-build-config: [rhel-8.8, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.8, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.8 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.8 --arch aarch64 needs: - - "image-build-trigger: [rhel-8.8, aarch64]" + - "test-images: [rhel-8.8, aarch64]" -"generate-ostree-build-config: [rhel-8.8, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-8.8, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-8.8 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-8.8 --arch x86_64 needs: - - "image-build-trigger: [rhel-8.8, x86_64]" + - "test-images: [rhel-8.8, x86_64]" -"generate-ostree-build-config: [rhel-9.0, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.0, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.0 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.0 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.0, aarch64]" + - "test-images: [rhel-9.0, aarch64]" -"generate-ostree-build-config: [rhel-9.0, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.0, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.0 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.0 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.0, x86_64]" + - "test-images: [rhel-9.0, x86_64]" -"generate-ostree-build-config: [rhel-9.2, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.2, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.2 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.2 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.2, aarch64]" + - "test-images: [rhel-9.2, aarch64]" -"generate-ostree-build-config: [rhel-9.2, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.2, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.2 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.2 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.2, x86_64]" + - "test-images: [rhel-9.2, x86_64]" -"generate-ostree-build-config: [rhel-9.4, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.4, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.4 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.4 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.4, aarch64]" + - "test-images: [rhel-9.4, aarch64]" -"generate-ostree-build-config: [rhel-9.4, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.4, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.4 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.4 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.4, x86_64]" + - "test-images: [rhel-9.4, x86_64]" -"generate-ostree-build-config: [rhel-9.6, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.6, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.6 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.6 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.6, aarch64]" + - "test-images: [rhel-9.6, aarch64]" -"generate-ostree-build-config: [rhel-9.6, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.6, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.6 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.6 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.6, x86_64]" + - "test-images: [rhel-9.6, x86_64]" -"generate-ostree-build-config: [rhel-9.7, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.7, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.7 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.7 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.7, aarch64]" + - "test-images: [rhel-9.7, aarch64]" -"generate-ostree-build-config: [rhel-9.7, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.7, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.7 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.7 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.7, x86_64]" + - "test-images: [rhel-9.7, x86_64]" -"generate-ostree-build-config: [rhel-9.8, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.8, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.8 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.8 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.8, aarch64]" + - "test-images: [rhel-9.8, aarch64]" -"generate-ostree-build-config: [rhel-9.8, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.8, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.8 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.8 --arch x86_64 needs: - - "image-build-trigger: [rhel-9.8, x86_64]" + - "test-images: [rhel-9.8, x86_64]" -"generate-ostree-build-config: [rhel-9.9, aarch64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.9, aarch64]": + stage: ostree-build extends: .terraform + tags: + - terraform variables: RUNNER: aws/fedora-44-aarch64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.9 --arch aarch64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.9 --arch aarch64 needs: - - "image-build-trigger: [rhel-9.9, aarch64]" + - "test-images: [rhel-9.9, aarch64]" -"generate-ostree-build-config: [rhel-9.9, x86_64]": - stage: ostree-gen +"test-ostree-images: [rhel-9.9, x86_64]": + stage: ostree-build extends: .terraform + tags: + - terraform/openstack variables: - RUNNER: aws/fedora-44-x86_64 + RUNNER: rhos-01/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro rhel-9.9 --arch x86_64 build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs - needs: - - "image-build-trigger: [rhel-9.9, x86_64]" - -"image-build-ostree-trigger: [centos-9, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [centos-9, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [centos-9, aarch64]" - - -"image-build-ostree-trigger: [centos-9, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [centos-9, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [centos-9, x86_64]" - - -"image-build-ostree-trigger: [fedora-43, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-43, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-43, aarch64]" - - -"image-build-ostree-trigger: [fedora-43, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-43, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-43, x86_64]" - - -"image-build-ostree-trigger: [fedora-44, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-44, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-44, aarch64]" - - -"image-build-ostree-trigger: [fedora-44, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-44, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-44, x86_64]" - - -"image-build-ostree-trigger: [fedora-45, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-45, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-45, aarch64]" - - -"image-build-ostree-trigger: [fedora-45, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [fedora-45, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [fedora-45, x86_64]" - - -"image-build-ostree-trigger: [rhel-8.10, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.10, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.10, aarch64]" - - -"image-build-ostree-trigger: [rhel-8.10, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.10, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.10, x86_64]" - - -"image-build-ostree-trigger: [rhel-8.4, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.4, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.4, aarch64]" - - -"image-build-ostree-trigger: [rhel-8.4, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.4, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.4, x86_64]" - - -"image-build-ostree-trigger: [rhel-8.6, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.6, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.6, aarch64]" - - -"image-build-ostree-trigger: [rhel-8.6, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.6, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.6, x86_64]" - - -"image-build-ostree-trigger: [rhel-8.8, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.8, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.8, aarch64]" - - -"image-build-ostree-trigger: [rhel-8.8, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-8.8, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-8.8, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.0, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.0, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.0, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.0, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.0, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.0, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.2, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.2, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.2, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.2, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.2, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.2, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.4, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.4, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.4, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.4, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.4, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.4, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.6, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.6, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.6, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.6, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.6, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.6, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.7, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.7, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.7, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.7, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.7, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.7, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.8, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.8, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.8, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.8, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.8, x86_64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.8, x86_64]" - - -"image-build-ostree-trigger: [rhel-9.9, aarch64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.9, aarch64]" - strategy: depend - needs: - - "generate-ostree-build-config: [rhel-9.9, aarch64]" - - -"image-build-ostree-trigger: [rhel-9.9, x86_64]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [rhel-9.9, x86_64]" - strategy: depend + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro rhel-9.9 --arch x86_64 needs: - - "generate-ostree-build-config: [rhel-9.9, x86_64]" + - "test-images: [rhel-9.9, x86_64]" "generate-manifests: [centos-10, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros centos-10 --workers 10 --metadata=false --output ./manifests @@ -2064,13 +1154,13 @@ fail: "generate-manifests: [centos-10, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros centos-10 --workers 10 --metadata=false --output ./manifests @@ -2088,13 +1178,13 @@ fail: "generate-manifests: [centos-9, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros centos-9 --workers 10 --metadata=false --output ./manifests @@ -2112,13 +1202,13 @@ fail: "generate-manifests: [centos-9, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros centos-9 --workers 10 --metadata=false --output ./manifests @@ -2136,13 +1226,13 @@ fail: "generate-manifests: [eln-11, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros eln-11 --workers 10 --metadata=false --output ./manifests @@ -2160,13 +1250,13 @@ fail: "generate-manifests: [eln-11, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros eln-11 --workers 10 --metadata=false --output ./manifests @@ -2184,13 +1274,13 @@ fail: "generate-manifests: [fedora-43, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros fedora-43 --workers 10 --metadata=false --output ./manifests @@ -2208,13 +1298,13 @@ fail: "generate-manifests: [fedora-43, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros fedora-43 --workers 10 --metadata=false --output ./manifests @@ -2232,13 +1322,13 @@ fail: "generate-manifests: [fedora-44, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros fedora-44 --workers 10 --metadata=false --output ./manifests @@ -2256,13 +1346,13 @@ fail: "generate-manifests: [fedora-44, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros fedora-44 --workers 10 --metadata=false --output ./manifests @@ -2280,13 +1370,13 @@ fail: "generate-manifests: [fedora-45, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros fedora-45 --workers 10 --metadata=false --output ./manifests @@ -2304,13 +1394,13 @@ fail: "generate-manifests: [fedora-45, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros fedora-45 --workers 10 --metadata=false --output ./manifests @@ -2328,13 +1418,13 @@ fail: "generate-manifests: [rhel-10.0, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-10.0 --workers 10 --metadata=false --output ./manifests @@ -2352,13 +1442,13 @@ fail: "generate-manifests: [rhel-10.0, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-10.0 --workers 10 --metadata=false --output ./manifests @@ -2376,13 +1466,13 @@ fail: "generate-manifests: [rhel-10.1, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-10.1 --workers 10 --metadata=false --output ./manifests @@ -2400,13 +1490,13 @@ fail: "generate-manifests: [rhel-10.1, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-10.1 --workers 10 --metadata=false --output ./manifests @@ -2424,13 +1514,13 @@ fail: "generate-manifests: [rhel-10.2, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-10.2 --workers 10 --metadata=false --output ./manifests @@ -2448,13 +1538,13 @@ fail: "generate-manifests: [rhel-10.2, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-10.2 --workers 10 --metadata=false --output ./manifests @@ -2472,13 +1562,13 @@ fail: "generate-manifests: [rhel-10.3, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-10.3 --workers 10 --metadata=false --output ./manifests @@ -2496,13 +1586,13 @@ fail: "generate-manifests: [rhel-10.3, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-10.3 --workers 10 --metadata=false --output ./manifests @@ -2520,13 +1610,13 @@ fail: "generate-manifests: [rhel-8.10, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-8.10 --workers 10 --metadata=false --output ./manifests @@ -2544,13 +1634,13 @@ fail: "generate-manifests: [rhel-8.10, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-8.10 --workers 10 --metadata=false --output ./manifests @@ -2568,13 +1658,13 @@ fail: "generate-manifests: [rhel-8.4, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-8.4 --workers 10 --metadata=false --output ./manifests @@ -2592,13 +1682,13 @@ fail: "generate-manifests: [rhel-8.4, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-8.4 --workers 10 --metadata=false --output ./manifests @@ -2616,13 +1706,13 @@ fail: "generate-manifests: [rhel-8.6, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-8.6 --workers 10 --metadata=false --output ./manifests @@ -2640,13 +1730,13 @@ fail: "generate-manifests: [rhel-8.6, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-8.6 --workers 10 --metadata=false --output ./manifests @@ -2664,13 +1754,13 @@ fail: "generate-manifests: [rhel-8.8, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-8.8 --workers 10 --metadata=false --output ./manifests @@ -2688,13 +1778,13 @@ fail: "generate-manifests: [rhel-8.8, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-8.8 --workers 10 --metadata=false --output ./manifests @@ -2712,13 +1802,13 @@ fail: "generate-manifests: [rhel-9.0, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.0 --workers 10 --metadata=false --output ./manifests @@ -2736,13 +1826,13 @@ fail: "generate-manifests: [rhel-9.0, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.0 --workers 10 --metadata=false --output ./manifests @@ -2760,13 +1850,13 @@ fail: "generate-manifests: [rhel-9.2, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.2 --workers 10 --metadata=false --output ./manifests @@ -2784,13 +1874,13 @@ fail: "generate-manifests: [rhel-9.2, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.2 --workers 10 --metadata=false --output ./manifests @@ -2808,13 +1898,13 @@ fail: "generate-manifests: [rhel-9.4, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.4 --workers 10 --metadata=false --output ./manifests @@ -2832,13 +1922,13 @@ fail: "generate-manifests: [rhel-9.4, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.4 --workers 10 --metadata=false --output ./manifests @@ -2856,13 +1946,13 @@ fail: "generate-manifests: [rhel-9.6, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.6 --workers 10 --metadata=false --output ./manifests @@ -2880,13 +1970,13 @@ fail: "generate-manifests: [rhel-9.6, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.6 --workers 10 --metadata=false --output ./manifests @@ -2904,13 +1994,13 @@ fail: "generate-manifests: [rhel-9.7, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.7 --workers 10 --metadata=false --output ./manifests @@ -2928,13 +2018,13 @@ fail: "generate-manifests: [rhel-9.7, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.7 --workers 10 --metadata=false --output ./manifests @@ -2952,13 +2042,13 @@ fail: "generate-manifests: [rhel-9.8, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.8 --workers 10 --metadata=false --output ./manifests @@ -2976,13 +2066,13 @@ fail: "generate-manifests: [rhel-9.8, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.8 --workers 10 --metadata=false --output ./manifests @@ -3000,13 +2090,13 @@ fail: "generate-manifests: [rhel-9.9, ppc64le]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches ppc64le --distros rhel-9.9 --workers 10 --metadata=false --output ./manifests @@ -3024,13 +2114,13 @@ fail: "generate-manifests: [rhel-9.9, s390x]": - stage: gen + stage: build extends: .terraform variables: RUNNER: aws/fedora-44-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches s390x --distros rhel-9.9 --workers 10 --metadata=false --output ./manifests diff --git a/test/scripts/generate-gitlab-ci b/test/scripts/generate-gitlab-ci index 070852785c..0855beb87d 100755 --- a/test/scripts/generate-gitlab-ci +++ b/test/scripts/generate-gitlab-ci @@ -7,26 +7,35 @@ import imgtestlib as testlib ARCHITECTURES = ["x86_64", "aarch64"] MANIFEST_ONLY_ARCHES = ["ppc64le", "s390x"] -RUNNER = testlib.get_common_ci_runner() OSTREE_DISTROS = ["fedora", "rhel-8", "rhel-9", "centos-9"] BASE_CONFIG = """--- stages: - init - - gen - build - - ostree-gen - ostree-build - - verify - finish variables: - # Set the parent pipeline ID as a global variable so that the child pipeline - # jobs can use it to retrieve artifacts. - PARENT_PIPELINE_ID: $CI_PIPELINE_ID GOPROXY: "https://proxy.golang.org,direct" +.base: + before_script: + - cat schutzbot/team_ssh_keys.txt | + tee -a ~/.ssh/authorized_keys > /dev/null + interruptible: true + retry: 1 + tags: + - terraform + variables: + PYTHONUNBUFFERED: 1 + +.terraform: + extends: .base + tags: + - terraform + init: stage: init interruptible: true @@ -53,75 +62,47 @@ fail: when: on_failure """ -GEN_TEMPLATE = """ -"generate-build-config: [{distro}, {arch}]": - stage: gen +TEST_IMAGES_TEMPLATE = """ +"test-images: [{distro}, {arch}]": + stage: build extends: .terraform + tags: + - {tag} variables: RUNNER: {runner}-{arch} INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-build-config --distro {distro} --arch {arch} build-config.yml - artifacts: - paths: - - build-config.yml + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-manifests --distro {distro} --arch {arch} """ -TRIGGER_TEMPLATE = """ -"image-build-trigger: [{distro}, {arch}]": - stage: build - trigger: - include: - - artifact: build-config.yml - job: "generate-build-config: [{distro}, {arch}]" - strategy: depend - needs: - - "generate-build-config: [{distro}, {arch}]" -""" - -OSTREE_GEN_TEMPLATE = """ -"generate-ostree-build-config: [{distro}, {arch}]": - stage: ostree-gen +TEST_OSTREE_IMAGES_TEMPLATE = """ +"test-ostree-images: [{distro}, {arch}]": + stage: ostree-build extends: .terraform + tags: + - {tag} variables: RUNNER: {runner}-{arch} INTERNAL_NETWORK: "true" script: - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/generate-ostree-build-config --distro {distro} --arch {arch} build-config.yml build-configs - artifacts: - paths: - - build-config.yml - - build-configs + - sudo -E ./test/scripts/install-dependencies + - ./test/scripts/test-new-ostree-manifests --distro {distro} --arch {arch} needs: - - "image-build-trigger: [{distro}, {arch}]" + - "test-images: [{distro}, {arch}]" """ -OSTREE_TRIGGER_TEMPLATE = """ -"image-build-ostree-trigger: [{distro}, {arch}]": - stage: ostree-build - trigger: - include: - - artifact: build-config.yml - job: "generate-ostree-build-config: [{distro}, {arch}]" - strategy: depend - needs: - - "generate-ostree-build-config: [{distro}, {arch}]" -""" - - MANIFEST_GEN_TEMPLATE = """ "generate-manifests: [{distro}, {arch}]": - stage: gen + stage: build extends: .terraform variables: RUNNER: {runner}-x86_64 INTERNAL_NETWORK: "true" script: | - sudo -E ./test/scripts/setup-osbuild-repo + sudo ./test/scripts/setup-osbuild-repo sudo ./test/scripts/install-dependencies echo "GOPROXY=$GOPROXY" go run ./cmd/gen-manifests --arches {arch} --distros {distro} --workers 10 --metadata=false --output ./manifests @@ -148,25 +129,22 @@ def main(): images = testlib.list_images(arches=ARCHITECTURES) combos = set() - gen_stage = [] - trigger_stage = [] - ostree_gen_stage = [] - ostree_trigger_stage = [] + build_stage = [] + ostree_build_stage = [] for img in sort_configs(images): combo = (img["distro"], img["arch"]) if combo in combos: continue - combos.add(combo) - gen_stage.append(GEN_TEMPLATE.format( - distro=img["distro"], - arch=img["arch"], - runner=RUNNER)) + runner = testlib.get_ci_runner_for(img["distro"], img["arch"], "qcow2") + tag = testlib.get_tag_for(runner) - trigger_stage.append(TRIGGER_TEMPLATE.format( + combos.add(combo) + build_stage.append(TEST_IMAGES_TEMPLATE.format( distro=img["distro"], arch=img["arch"], - runner=RUNNER)) + runner=runner, + tag=tag)) for ostree_distro_prefix in OSTREE_DISTROS: if img["distro"].startswith(ostree_distro_prefix): @@ -174,15 +152,11 @@ def main(): else: continue - ostree_gen_stage.append(OSTREE_GEN_TEMPLATE.format( + ostree_build_stage.append(TEST_OSTREE_IMAGES_TEMPLATE.format( distro=img["distro"], arch=img["arch"], - runner=RUNNER)) - - ostree_trigger_stage.append(OSTREE_TRIGGER_TEMPLATE.format( - distro=img["distro"], - arch=img["arch"], - runner=RUNNER)) + runner=runner, + tag=tag)) man_only_images = testlib.list_images(arches=MANIFEST_ONLY_ARCHES) man_gen_stage = [] @@ -192,15 +166,18 @@ def main(): continue combos.add(combo) - man_gen_stage.append(MANIFEST_GEN_TEMPLATE.format(distro=img["distro"], arch=img["arch"], runner=RUNNER)) + runner = testlib.get_ci_runner_for(img["distro"], img["arch"], "qcow2") + tag = testlib.get_tag_for(runner) + man_gen_stage.append(MANIFEST_GEN_TEMPLATE.format( + distro=img["distro"], + arch=img["arch"], + runner=runner, + tag=tag)) with open(config_path, "w", encoding="utf-8") as config_file: - config_file.write(BASE_CONFIG.format(runner=RUNNER)) - config_file.write(testlib.BASE_CONFIG) - config_file.write("\n".join(gen_stage)) - config_file.write("\n".join(trigger_stage)) - config_file.write("\n".join(ostree_gen_stage)) - config_file.write("\n".join(ostree_trigger_stage)) + config_file.write(BASE_CONFIG) + config_file.write("\n".join(build_stage)) + config_file.write("\n".join(ostree_build_stage)) config_file.write("\n".join(man_gen_stage)) From 539f627619488ed9f4935d8dd859540a9e5eb307 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Thu, 21 May 2026 16:59:04 +0200 Subject: [PATCH 04/10] test: delete the dynamic pipeline generators --- test/scripts/generate-build-config | 107 ------ test/scripts/generate-ostree-build-config | 376 ---------------------- test/scripts/imgtestlib/core.py | 30 -- 3 files changed, 513 deletions(-) delete mode 100755 test/scripts/generate-build-config delete mode 100755 test/scripts/generate-ostree-build-config diff --git a/test/scripts/generate-build-config b/test/scripts/generate-build-config deleted file mode 100755 index b0e9b9c87d..0000000000 --- a/test/scripts/generate-build-config +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python3 -# -# Generates gitlab child pipelines for building images. -# Each pipeline should build a single image configuration test. -import os -from tempfile import TemporaryDirectory - -import imgtestlib as testlib - -JOB_TEMPLATE = """ -build/{distro}/{arch}/{image_type}/{config_name}: - stage: test - script: - - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - ./test/scripts/build-image "{distro}" "{image_type}" "{config}" - - ./test/scripts/boot-image "{image_path}" "{config}" - - sudo -E ./test/scripts/upload-results "{distro}" "{image_type}" "{config}" - extends: .terraform - tags: - - {tag} - variables: - RUNNER: {runner}-{arch} - INTERNAL_NETWORK: "{internal}" -""" - - -@testlib.log_section("Generating manifests") -def generate_manifests(outputdir, distro, arch): - """ - Generate all manifest using the default config list and return a dictionary mapping each manifest file to the - manifest data and its ID. - """ - target = arch - distros = None - if distro: - target = distro + "/" + arch - distros = [distro] - - print(f"๐Ÿ—’๏ธ Generating all manifests using the default config list for {target}") - err = testlib.gen_manifests(outputdir, arches=[arch], distros=distros) - - # print stderr in case there were errors or warnings about skipped configurations - # but filter out the annoying ones - stderr = err.decode().splitlines() - for line in stderr: - if "No match for group package" in line: - continue - if "Failed to load consumer certs" in line: - continue - print(line) - - print("โœ… Manifest generation done!\n") - return testlib.read_manifests(outputdir) - - -def generate_configs(build_requests, pipeline_file): - print(f"๐Ÿงช Generating dynamic pipelines for {len(build_requests)} builds") - for build in build_requests: - distro = build["distro"] - arch = build["arch"] - image_type = build["image-type"] - config = build["config"] - - config_name = config["name"] - - build_name = testlib.gen_build_name(distro, arch, image_type, config_name) - image_path = f"./build/{build_name}" - - runner = testlib.get_ci_runner_for(distro, arch, image_type) - tag = testlib.get_tag_for(runner) - - config_path = os.path.join(testlib.CONFIGS_PATH, config_name+".json") - pipeline_file.write(JOB_TEMPLATE.format(distro=distro, arch=arch, image_type=image_type, - runner=runner, tag=tag, - config_name=config_name, config=config_path, - internal="true" if "rhel" in distro else "false", - image_path=image_path)) - print("โœ… DONE!") - - -def main(): - parser = testlib.clargs() - args = parser.parse_args() - - config_path = args.config - distro = args.distro - arch = args.arch - - testlib.check_config_names() - - with TemporaryDirectory() as manifest_dir: - manifests = generate_manifests(manifest_dir, distro, arch) - build_requests = testlib.filter_builds(manifests, distro=distro, arch=arch) - - with open(config_path, "w", encoding="utf-8") as config_file: - if len(build_requests) == 0: - print("โšซ No manifest changes detected. Generating null config.") - config_file.write(testlib.NULL_CONFIG) - return - - config_file.write(testlib.BASE_CONFIG) - generate_configs(build_requests, config_file) - - -if __name__ == "__main__": - main() diff --git a/test/scripts/generate-ostree-build-config b/test/scripts/generate-ostree-build-config deleted file mode 100755 index e8ec3c512c..0000000000 --- a/test/scripts/generate-ostree-build-config +++ /dev/null @@ -1,376 +0,0 @@ -#!/usr/bin/env python3 -import fnmatch -import json -import os -from contextlib import contextmanager -from tempfile import NamedTemporaryFile, TemporaryDirectory - -import imgtestlib as testlib - -JOB_TEMPLATE = """ -build/{distro}/{arch}/{image_type}/{config_name}: - stage: test - script: - - sudo -E ./test/scripts/setup-osbuild-repo - - sudo ./test/scripts/install-dependencies - - {dl_container} - - {start_container} - - ./test/scripts/build-image "{distro}" "{image_type}" "{config}" - - ./test/scripts/boot-image "{image_path}" "{config}" - - sudo -E ./test/scripts/upload-results "{distro}" "{image_type}" "{config}" - extends: .terraform - variables: - RUNNER: {runner}-{arch} - INTERNAL_NETWORK: "{internal}" - needs: - - pipeline: "$PARENT_PIPELINE_ID" - job: "generate-ostree-build-config: [{distro}, {arch}]" -""" - - -def read_config_list(): - with open(testlib.CONFIG_LIST, "r", encoding="utf-8") as config_list_file: - return json.load(config_list_file) - - -def matches(name: str, filters: list[str]) -> bool: - return any(fnmatch.fnmatch(name, i) for i in filters) - - -def configs_with_deps(configs, distro=None, arch=None): - """ - Return a config list with only the config files that have dependencies. - Filter on distro and arch if specified. - """ - with_deps = [] - config_list_dir = os.path.abspath(os.path.dirname(testlib.CONFIG_LIST)) - for item in configs: - path = item["path"] - filters = item["filters"] - # load config and check if it requires a commit - config_path = os.path.join(config_list_dir, path) - with open(config_path, "r", encoding="utf-8") as config_file: - data = json.load(config_file) - if not data.get("depends"): - continue - - # filter on distro and arch - distro_filters = filters.get("distros", []) - if distro_filters and distro and not matches(distro, distro_filters): - continue - arch_filters = filters.get("arches", []) - if arch_filters and arch and not matches(arch, arch_filters): - continue - - with_deps.append({"path": config_path, "filters": filters}) - - return with_deps - - -def gen_dependency_manifests(config_list, distro, arch, outputdir): - """ - Generate manifests for the dependencies of the configs in config list. The function generates a temporary config - list that maps each config that appears in a dependency to the dependency image type and runs gen-manifests with - that config list. - - Returns a dictionary mapping manifest file name (without path) to the manifest data and its ID. - """ - target = arch - distros = None - if distro: - target = distro + "/" + arch - distros = [distro] - - print(f"๐Ÿ—’๏ธ Generating manifests for dependencies for {target}") - dep_config_list: list = [] # config list for the dependencies - gen_image_types = set() # set of all the image types to generate manifests for - - # generate a config list for the dependencies - for item in config_list: - config_path = item["path"] - with open(config_path, encoding="utf-8") as config_file: - cfg = json.load(config_file) - - dep = cfg["depends"] - image_type = dep["image-type"] - - # dependency config path can be relative to config_path: make it absolute - configs_dir = os.path.abspath(os.path.dirname(config_path)) - dep_config_path = os.path.join(configs_dir, dep["config"]) - - dep_config_list.append({"path": dep_config_path, "filters": {"image-types": [image_type]}}) - gen_image_types.add(image_type) - - # write dependency configs to temporary file and use as input to gen-manifests - with NamedTemporaryFile(mode="w") as tmpfile: - json.dump(dep_config_list, tmpfile) - tmpfile.flush() - err = testlib.gen_manifests(outputdir, config_list=tmpfile.name, - distros=distros, arches=[arch], images=gen_image_types) - # print stderr in case there were errors or warnings about skipped configurations - # but filter out the annoying ones - stderr = err.decode().splitlines() - for line in stderr: - if "No match for group package" in line: - continue - if "Failed to load consumer certs" in line: - continue - print(line) - - print("โœ… Manifest generation done!\n") - return testlib.read_manifests(outputdir) - - -def gen_image_manifests(config_list, configs, distro, arch, outputdir): - """ - Write the config list and configs to a temporary directory and generate the corresponding manifests in the output - directory. The manifest generation skips any distro + arch + image-type configuration that isn't covered by the - config list. - - Returns a dictionary mapping manifest file name (without path) to the manifest data and its ID. - """ - target = arch - distros = None - if distro: - target = distro + "/" + arch - distros = [distro] - - print(f"๐Ÿ—’๏ธ Generating manifests for ostree-based images for {target}") - with TemporaryDirectory() as tmpdir: - # write each config to a separate file - for config in configs.values(): - with open(os.path.join(tmpdir, config["name"] + ".json"), "w", encoding="utf-8") as config_file: - json.dump(config, config_file) - - # write config list in the same dir - config_list_path = os.path.join(tmpdir, "config-list.json") - with open(config_list_path, "w", encoding="utf-8") as config_list_file: - json.dump(config_list, config_list_file) - - err = testlib.gen_manifests(outputdir, config_list=config_list_path, - arches=[arch], distros=distros, commits=True, - flatpaks=True, skip_no_config=True) - - # print stderr in case there were errors or warnings about skipped configurations - # but filter out the annoying ones - stderr = err.decode().splitlines() - for line in stderr: - if "No match for group package" in line: - continue - if "Failed to load consumer certs" in line: - continue - print(line) - - print("โœ… Manifest generation done!\n") - return testlib.read_manifests(outputdir) - - -def default_ref(distro, arch): - name, version = distro.split("-") - if name == "rhel": - # we use dots in our RHEL versions now - version, *_ = version.split(".") - product = "edge" - elif name == "fedora": - product = "iot" - elif name == "centos": - product = "edge" - else: - raise ValueError(f"unknown distro name {name}") - - return f"{name}/{version}/{arch}/{product}" # pylint: disable=possibly-used-before-assignment - - -@contextmanager -def setup_dependencies(manifests, config_list, distro, arch): - # pylint: disable=too-many-statements - """ - For each config in the config list, list all image configurations (distro, arch, image type) that it applies to and - use the manifests to find the corresponding manifest IDs. Pull and run the corresponding dependency container from - the registry and write a new config (and config list) that replaces the ostree options with the container URL and - port. - The config list and configs that function yields can be used to generate manifests with ostree commits resolved. - The containers are stopped when the context exits. - """ - container_ids = [] - new_config_list: list = [] - new_configs = {} - container_configs = {} - - container_ports: dict[str, int] = {} - for item in config_list: - config_path = item["path"] - filters = item["filters"] - with open(config_path, encoding="utf-8") as config_file: - config_data = json.load(config_file) - config_name = config_data["name"] - - # dependency config path is relative to config file - dep_config_path = os.path.join(os.path.dirname(config_path), config_data["depends"]["config"]) - with open(dep_config_path, encoding="utf-8") as dep_config_file: - dep_config_data = json.load(dep_config_file) - dep_config_name = dep_config_data["name"] - dep_image_type = config_data["depends"]["image-type"] - - # get all image configurations that this config applies to - distros = filters.get("distros") - if distro: - distros = [distro] - arches = [arch] - image_configs = testlib.list_images(distros=distros, - arches=arches, - images=filters.get("image-types")) - - distros_to_skip = [] - for skip in filters.get("skip-distros", []): - distros_to_skip.append(skip["name"]) - for image_config in image_configs: - ic_distro = image_config["distro"] - if ic_distro in distros_to_skip: - distro = image_config["distro"] - arch = image_config["arch"] - image_type = image_config["image-type"] - print(f"Skipping {distro} {arch} {image_type}: distro found in skip list") - continue - ic_arch = image_config["arch"] - ic_image_type = image_config["image-type"] - dep_build_name = testlib.gen_build_name(ic_distro, ic_arch, dep_image_type, dep_config_name) - manifest_id = manifests[dep_build_name + ".json"]["id"] - container_s3_prefix = testlib.gen_build_info_s3_dir_path(distro, arch, manifest_id) - container_s3_path = os.path.join(container_s3_prefix, "container", "container.tar") - - # start each container once on an incremental port - port = container_ports.get(container_s3_path) - if not port: - # Pulling and launching the container will fail if the specific container config was never built. This - # can happen if a dependency is specified that does not exist in the config-list. - port = 42000 + len(container_ports) - container_ports[container_s3_path] = port - - # modify image config with container address and ref - config_name = config_data["name"] - config_name = f"{config_name}-{port}" - # get the ref from the current config, or compute the default if unset - ref = config_data.get("options", {}).get("ostree", {}).get("ref", default_ref(ic_distro, ic_arch)) - new_config = { - "name": config_name, - "options": { - "ostree": { - "url": f"http://localhost:{port}/repo", - "ref": ref, - } - }, - "blueprint": config_data.get("blueprint"), - } - new_configs[config_name] = new_config - - container_configs[config_name] = { - "s3path": container_s3_path, - "port": port, - } - - config_fname = config_name + ".json" - new_config_list.append({ - "path": config_fname, - "filters": { - "distros": [ic_distro], - "arches": [ic_arch], - "image-types": [ic_image_type], - }, - }) - - try: - for container_s3_path, port in container_ports.items(): - with TemporaryDirectory() as container_dir: - print(f"โฌ‡๏ธ Downloading container archive from {container_s3_path}") - container_archive = os.path.join(container_dir, "container.tar") - testlib.runcmd_nc(["aws", "s3", "cp", "--no-progress", container_s3_path, container_archive]) - print(f"๐Ÿ“ฆ Starting container oci-archive:{container_archive} {port}") - # Running podman as root is not necessary, but currently it's failing with permission errors. - # Run it with sudo for now until we figure out the issue. - cont_id, _ = testlib.runcmd(["sudo", "podman", "run", "-d", "--rm", f"-p{port}:8080", - f"oci-archive:{container_archive}"]) - container_ids.append(cont_id.strip().decode()) - - yield new_config_list, new_configs, container_configs - finally: - if container_ids: - print("๐Ÿ“ฆ Stopping containers") - out, _ = testlib.runcmd(["sudo", "podman", "stop", *container_ids]) - print(out.decode()) - - -def generate_configs(build_requests, container_configs, pipeline_file, configs_dir): - print(f"๐Ÿงช Generating dynamic pipelines for {len(build_requests)} builds") - os.makedirs(configs_dir, exist_ok=True) - for build in build_requests: - distro = build["distro"] - arch = build["arch"] - image_type = build["image-type"] - config = build["config"] - - config_name = config["name"] - - build_name = testlib.gen_build_name(distro, arch, image_type, config_name) - image_path = f"./build/{build_name}" - # generate script line to pull and start container - container = container_configs[config_name] - - # write the config to the artifacts directory - build_config_path = os.path.join(configs_dir, config_name + ".json") - with open(build_config_path, "w", encoding="utf-8") as build_config_file: - json.dump(config, build_config_file) - - container_s3_path = container["s3path"] - container_port = container["port"] - - dl_container_cmd = f"aws s3 cp --no-progress {container_s3_path} container.tar" - run_container_cmd = f"sudo podman run -d --rm -p{container_port}:8080 oci-archive:container.tar" - - pipeline_file.write(JOB_TEMPLATE.format(distro=distro, arch=arch, image_type=image_type, - runner=testlib.get_common_ci_runner(), - config_name=config_name, config=build_config_path, - dl_container=dl_container_cmd, - start_container=run_container_cmd, - internal="true" if "rhel" in distro else "false", - image_path=image_path)) - print("โœ… DONE!") - - -def main(): - parser = testlib.clargs() - parser.add_argument("build_configs", type=str, help="directory to write individual build configs") - args = parser.parse_args() - - config_path = args.config - configs_dir = args.build_configs - distro = args.distro - arch = args.arch - - testlib.check_config_names() - - config_list = configs_with_deps(read_config_list(), distro, arch) # filtered config list: only configs with deps - - with TemporaryDirectory() as cache_root: - dep_manifest_dir = os.path.join(cache_root, "dependencies") - dep_manifests = gen_dependency_manifests(config_list, distro, arch, dep_manifest_dir) - - with setup_dependencies(dep_manifests, config_list, distro, arch) as \ - (pull_config_list, pull_configs, containers): - manifest_dir = os.path.join(cache_root, "manifests") - manifests = gen_image_manifests(pull_config_list, pull_configs, distro, arch, manifest_dir) - - build_requests = testlib.filter_builds(manifests, distro=distro, arch=arch, skip_ostree_pull=False) - - with open(config_path, "w", encoding="utf-8") as config_file: - if len(build_requests) == 0: - print("โšซ No manifest changes detected. Generating null config.") - config_file.write(testlib.NULL_CONFIG) - return - - config_file.write(testlib.BASE_CONFIG) - generate_configs(build_requests, containers, config_file, configs_dir) - - -if __name__ == "__main__": - main() diff --git a/test/scripts/imgtestlib/core.py b/test/scripts/imgtestlib/core.py index d0ec38b435..676efbd500 100644 --- a/test/scripts/imgtestlib/core.py +++ b/test/scripts/imgtestlib/core.py @@ -42,35 +42,6 @@ } -# base and terraform bits copied from main .gitlab-ci.yml -# needed for status reporting and defining the runners -BASE_CONFIG = """ -.base: - before_script: - - cat schutzbot/team_ssh_keys.txt | - tee -a ~/.ssh/authorized_keys > /dev/null - interruptible: true - retry: 1 - tags: - - terraform - variables: - PYTHONUNBUFFERED: 1 - -.terraform: - extends: .base - tags: - - terraform -""" - -NULL_CONFIG = """ -NullBuild: - stage: test - script: echo "No manifest changes detected. Skipping build." - tags: - - "shell" -""" - - def list_images(distros=None, arches=None, images=None): distros_arg = "*" if distros: @@ -359,7 +330,6 @@ def get_tag_for(runner): raise ValueError(f"Unknown runner: {runner}") - def find_image_file(build_path: str) -> str: """ Find the path to the image by reading the manifest and finding the exported pipeline's output directory. From 1694100c85eec8a818e7c305ace1a396a8ca894a Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Thu, 21 May 2026 17:01:48 +0200 Subject: [PATCH 05/10] Schutzfile: bump the rngseed Let's test everything! --- Schutzfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Schutzfile b/Schutzfile index ed2937ebe3..967a9d6ab9 100644 --- a/Schutzfile +++ b/Schutzfile @@ -1,6 +1,6 @@ { "common": { - "rngseed": 2026052100, + "rngseed": 2026060901, "dependencies": { "bootc-image-builder": { "ref": "quay.io/centos-bootc/bootc-image-builder@sha256:9893e7209e5f449b86ababfd2ee02a58cca2e5990f77b06c3539227531fc8120" From 5ae136bdd0132baed45ce86f5a3ec5f00ba68b0b Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Tue, 9 Jun 2026 14:45:44 +0200 Subject: [PATCH 06/10] test: move prints outside of build_image() This way, the build progress should look like this: 1/22: Testing image ... Image build log Boot test log Results upload log Test finished!! --- test/scripts/imgtestlib/build.py | 4 ---- test/scripts/test-new-manifests | 6 ++++-- test/scripts/test-new-ostree-manifests | 7 +++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/test/scripts/imgtestlib/build.py b/test/scripts/imgtestlib/build.py index b9d65304e8..0c0131ada7 100644 --- a/test/scripts/imgtestlib/build.py +++ b/test/scripts/imgtestlib/build.py @@ -14,8 +14,6 @@ def build_image(distro, arch, image_type, config_path): config_name = config["name"] - print(f"๐Ÿ‘ท Building image {distro}/{image_type} using config {config_path}") - # print the config for logging print(json.dumps(config, indent=2)) @@ -25,8 +23,6 @@ def build_image(distro, arch, image_type, config_path): "--distro", distro, "--arch", arch, "--type", image_type, "--config", config_path] runcmd_nc(cmd, extra_env=rng_seed_env()) - print("โœ… Build finished!!") - # Build artifacts are owned by root. Make them world accessible. runcmd(["sudo", "chmod", "a+rwX", "-R", "./build"]) diff --git a/test/scripts/test-new-manifests b/test/scripts/test-new-manifests index 1f6d8bed23..f4b952efd0 100755 --- a/test/scripts/test-new-manifests +++ b/test/scripts/test-new-manifests @@ -43,14 +43,15 @@ def generate_manifests(outputdir, distro, arch): def build_new_images(build_requests): print(f"Building {len(build_requests)} new images") - for build in build_requests: + for idx, build in enumerate(build_requests, start=1): distro = build["distro"] arch = build["arch"] image_type = build["image-type"] config = build["config"] - config_name = config["name"] + print(f"{idx}/{len(build_requests)}: Testing image {distro}/{image_type} using config {config_name}") + config_path = os.path.join(testlib.CONFIGS_PATH, config_name+".json") testlib.build_image(distro, arch, image_type, config_path) @@ -58,6 +59,7 @@ def build_new_images(build_requests): image_search_path = os.path.join("build", build_name) testlib.boot_image(image_search_path, config_path) testlib.upload_results(distro, arch, image_type, config_path) + print("โœ… Test finished!!") print("โœ… DONE!") diff --git a/test/scripts/test-new-ostree-manifests b/test/scripts/test-new-ostree-manifests index b21e76defb..fbf7f4694f 100755 --- a/test/scripts/test-new-ostree-manifests +++ b/test/scripts/test-new-ostree-manifests @@ -284,26 +284,29 @@ def setup_dependencies(manifests, config_list, distro, arch): def build_new_images(build_requests): print(f"Building {len(build_requests)} new images") - for build in build_requests: + for idx, build in enumerate(build_requests, start=1): distro = build["distro"] arch = build["arch"] image_type = build["image-type"] config = build["config"] - config_name = config["name"] + print(f"{idx:2d}/{len(build_requests)}: Testing image {distro}/{image_type} using config {config_name}") + # The configs for these builds are generated dynamically because they depend on the local container. # Write the config to a file for each build. with TemporaryDirectory() as config_dir: config_path = os.path.join(config_dir, config_name+".json") with open(config_path, "w", encoding="utf-8") as config_file: json.dump(config, config_file) + testlib.build_image(distro, arch, image_type, config_path) build_name = testlib.gen_build_name(distro, arch, image_type, config_name) image_search_path = os.path.join("build", build_name) testlib.boot_image(image_search_path, config_path) testlib.upload_results(distro, arch, image_type, config_path) + print("โœ… Test finished!!") print("โœ… DONE!") From a5222e67541c3858d84ba3e6473d663ba522bc44 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Tue, 9 Jun 2026 15:14:43 +0200 Subject: [PATCH 07/10] test/imgtestlib: capture the build log output Now that we're building all images on the same runner, the log becomes too long and noisy and hits the limits of the CI log length. Capture build log output and errors and store them in a path that will be used as a CI artifact we can review. Note that runcmd() will print stdout and stderr when a command fails. --- test/scripts/imgtestlib/build.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/test/scripts/imgtestlib/build.py b/test/scripts/imgtestlib/build.py index 0c0131ada7..b3ab8ed376 100644 --- a/test/scripts/imgtestlib/build.py +++ b/test/scripts/imgtestlib/build.py @@ -3,9 +3,11 @@ from typing import Dict from .gitlab import log_section -from .run import runcmd, runcmd_nc +from .run import runcmd from .testenv import get_host_distro, get_osbuild_commit, rng_seed_env +BUILD_LOG_PATH = "./logs" + @log_section("Building image") def build_image(distro, arch, image_type, config_path): @@ -21,7 +23,10 @@ def build_image(distro, arch, image_type, config_path): cmd = ["sudo", "-E", "./bin/build", "--output", "./build", "--checkpoints", "build", "--distro", distro, "--arch", arch, "--type", image_type, "--config", config_path] - runcmd_nc(cmd, extra_env=rng_seed_env()) + stdout, stderr = runcmd(cmd, extra_env=rng_seed_env()) + + build_name = gen_build_name(distro, arch, image_type, config_name) + save_logs(build_name, stdout, stderr) # Build artifacts are owned by root. Make them world accessible. runcmd(["sudo", "chmod", "a+rwX", "-R", "./build"]) @@ -85,3 +90,14 @@ def gen_build_name(distro, arch, image_type, config_name): def _u(s): return s.replace("-", "_") + + +def save_logs(build_name, out, err): + """ + Save stdout and stderr output for a job to the BUILD_LOG_PATH. + """ + os.makedirs(BUILD_LOG_PATH, exist_ok=True) + with open(os.path.join(BUILD_LOG_PATH, f"{build_name}.out"), mode="w", encoding="utf-8") as log: + log.write(out.decode()) + with open(os.path.join(BUILD_LOG_PATH, f"{build_name}.err"), mode="w", encoding="utf-8") as log: + log.write(err.decode()) From bc9569664831d2f955799f52cf63223509a3caf0 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Tue, 9 Jun 2026 15:16:42 +0200 Subject: [PATCH 08/10] gitlab: save build logs to job artifacts --- .gitlab-ci.yml | 219 ++++++++++++++++++++++++++++++++ test/scripts/generate-gitlab-ci | 12 +- 2 files changed, 229 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 22222af38a..cf86ba5bd4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -61,6 +61,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro centos-10 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [centos-10, x86_64]": @@ -75,6 +78,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro centos-10 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [centos-9, aarch64]": @@ -89,6 +95,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro centos-9 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [centos-9, x86_64]": @@ -103,6 +112,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro centos-9 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [eln-11, aarch64]": @@ -117,6 +129,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro eln-11 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [eln-11, x86_64]": @@ -131,6 +146,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro eln-11 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [fedora-43, aarch64]": @@ -145,6 +163,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-43 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [fedora-43, x86_64]": @@ -159,6 +180,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-43 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [fedora-44, aarch64]": @@ -173,6 +197,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-44 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [fedora-44, x86_64]": @@ -187,6 +214,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-44 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [fedora-45, aarch64]": @@ -201,6 +231,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-45 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [fedora-45, x86_64]": @@ -215,6 +248,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro fedora-45 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.0, aarch64]": @@ -229,6 +265,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.0 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.0, x86_64]": @@ -243,6 +282,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.0 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.1, aarch64]": @@ -257,6 +299,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.1 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.1, x86_64]": @@ -271,6 +316,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.1 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.2, aarch64]": @@ -285,6 +333,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.2 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.2, x86_64]": @@ -299,6 +350,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.2 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.3, aarch64]": @@ -313,6 +367,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.3 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-10.3, x86_64]": @@ -327,6 +384,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-10.3 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-7.9, x86_64]": @@ -341,6 +401,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-7.9 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.10, aarch64]": @@ -355,6 +418,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.10 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.10, x86_64]": @@ -369,6 +435,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.10 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.4, aarch64]": @@ -383,6 +452,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.4 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.4, x86_64]": @@ -397,6 +469,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.4 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.6, aarch64]": @@ -411,6 +486,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.6 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.6, x86_64]": @@ -425,6 +503,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.6 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.8, aarch64]": @@ -439,6 +520,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.8 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-8.8, x86_64]": @@ -453,6 +537,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-8.8 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.0, aarch64]": @@ -467,6 +554,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.0 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.0, x86_64]": @@ -481,6 +571,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.0 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.2, aarch64]": @@ -495,6 +588,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.2 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.2, x86_64]": @@ -509,6 +605,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.2 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.4, aarch64]": @@ -523,6 +622,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.4 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.4, x86_64]": @@ -537,6 +639,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.4 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.6, aarch64]": @@ -551,6 +656,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.6 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.6, x86_64]": @@ -565,6 +673,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.6 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.7, aarch64]": @@ -579,6 +690,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.7 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.7, x86_64]": @@ -593,6 +707,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.7 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.8, aarch64]": @@ -607,6 +724,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.8 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.8, x86_64]": @@ -621,6 +741,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.8 --arch x86_64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.9, aarch64]": @@ -635,6 +758,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.9 --arch aarch64 + artifacts: + paths: + - ./logs "test-images: [rhel-9.9, x86_64]": @@ -649,6 +775,9 @@ fail: - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro rhel-9.9 --arch x86_64 + artifacts: + paths: + - ./logs "test-ostree-images: [centos-9, aarch64]": stage: ostree-build @@ -664,6 +793,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro centos-9 --arch aarch64 needs: - "test-images: [centos-9, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [centos-9, x86_64]": @@ -680,6 +812,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro centos-9 --arch x86_64 needs: - "test-images: [centos-9, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-43, aarch64]": @@ -696,6 +831,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-43 --arch aarch64 needs: - "test-images: [fedora-43, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-43, x86_64]": @@ -712,6 +850,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-43 --arch x86_64 needs: - "test-images: [fedora-43, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-44, aarch64]": @@ -728,6 +869,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-44 --arch aarch64 needs: - "test-images: [fedora-44, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-44, x86_64]": @@ -744,6 +888,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-44 --arch x86_64 needs: - "test-images: [fedora-44, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-45, aarch64]": @@ -760,6 +907,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-45 --arch aarch64 needs: - "test-images: [fedora-45, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [fedora-45, x86_64]": @@ -776,6 +926,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro fedora-45 --arch x86_64 needs: - "test-images: [fedora-45, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.10, aarch64]": @@ -792,6 +945,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.10 --arch aarch64 needs: - "test-images: [rhel-8.10, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.10, x86_64]": @@ -808,6 +964,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.10 --arch x86_64 needs: - "test-images: [rhel-8.10, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.4, aarch64]": @@ -824,6 +983,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.4 --arch aarch64 needs: - "test-images: [rhel-8.4, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.4, x86_64]": @@ -840,6 +1002,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.4 --arch x86_64 needs: - "test-images: [rhel-8.4, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.6, aarch64]": @@ -856,6 +1021,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.6 --arch aarch64 needs: - "test-images: [rhel-8.6, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.6, x86_64]": @@ -872,6 +1040,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.6 --arch x86_64 needs: - "test-images: [rhel-8.6, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.8, aarch64]": @@ -888,6 +1059,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.8 --arch aarch64 needs: - "test-images: [rhel-8.8, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-8.8, x86_64]": @@ -904,6 +1078,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-8.8 --arch x86_64 needs: - "test-images: [rhel-8.8, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.0, aarch64]": @@ -920,6 +1097,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.0 --arch aarch64 needs: - "test-images: [rhel-9.0, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.0, x86_64]": @@ -936,6 +1116,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.0 --arch x86_64 needs: - "test-images: [rhel-9.0, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.2, aarch64]": @@ -952,6 +1135,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.2 --arch aarch64 needs: - "test-images: [rhel-9.2, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.2, x86_64]": @@ -968,6 +1154,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.2 --arch x86_64 needs: - "test-images: [rhel-9.2, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.4, aarch64]": @@ -984,6 +1173,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.4 --arch aarch64 needs: - "test-images: [rhel-9.4, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.4, x86_64]": @@ -1000,6 +1192,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.4 --arch x86_64 needs: - "test-images: [rhel-9.4, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.6, aarch64]": @@ -1016,6 +1211,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.6 --arch aarch64 needs: - "test-images: [rhel-9.6, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.6, x86_64]": @@ -1032,6 +1230,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.6 --arch x86_64 needs: - "test-images: [rhel-9.6, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.7, aarch64]": @@ -1048,6 +1249,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.7 --arch aarch64 needs: - "test-images: [rhel-9.7, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.7, x86_64]": @@ -1064,6 +1268,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.7 --arch x86_64 needs: - "test-images: [rhel-9.7, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.8, aarch64]": @@ -1080,6 +1287,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.8 --arch aarch64 needs: - "test-images: [rhel-9.8, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.8, x86_64]": @@ -1096,6 +1306,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.8 --arch x86_64 needs: - "test-images: [rhel-9.8, x86_64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.9, aarch64]": @@ -1112,6 +1325,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.9 --arch aarch64 needs: - "test-images: [rhel-9.9, aarch64]" + artifacts: + paths: + - ./logs "test-ostree-images: [rhel-9.9, x86_64]": @@ -1128,6 +1344,9 @@ fail: - ./test/scripts/test-new-ostree-manifests --distro rhel-9.9 --arch x86_64 needs: - "test-images: [rhel-9.9, x86_64]" + artifacts: + paths: + - ./logs "generate-manifests: [centos-10, ppc64le]": stage: build diff --git a/test/scripts/generate-gitlab-ci b/test/scripts/generate-gitlab-ci index 0855beb87d..0f10481333 100755 --- a/test/scripts/generate-gitlab-ci +++ b/test/scripts/generate-gitlab-ci @@ -75,6 +75,9 @@ TEST_IMAGES_TEMPLATE = """ - sudo -E ./test/scripts/setup-osbuild-repo - sudo -E ./test/scripts/install-dependencies - ./test/scripts/test-new-manifests --distro {distro} --arch {arch} + artifacts: + paths: + - {logdir} """ TEST_OSTREE_IMAGES_TEMPLATE = """ @@ -92,6 +95,9 @@ TEST_OSTREE_IMAGES_TEMPLATE = """ - ./test/scripts/test-new-ostree-manifests --distro {distro} --arch {arch} needs: - "test-images: [{distro}, {arch}]" + artifacts: + paths: + - {logdir} """ MANIFEST_GEN_TEMPLATE = """ @@ -144,7 +150,8 @@ def main(): distro=img["distro"], arch=img["arch"], runner=runner, - tag=tag)) + tag=tag, + logdir=testlib.BUILD_LOG_PATH)) for ostree_distro_prefix in OSTREE_DISTROS: if img["distro"].startswith(ostree_distro_prefix): @@ -156,7 +163,8 @@ def main(): distro=img["distro"], arch=img["arch"], runner=runner, - tag=tag)) + tag=tag, + logdir=testlib.BUILD_LOG_PATH)) man_only_images = testlib.list_images(arches=MANIFEST_ONLY_ARCHES) man_gen_stage = [] From 79413b0325e5a49093fcc9660c4f2773a422ddb0 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Wed, 10 Jun 2026 12:38:06 +0200 Subject: [PATCH 09/10] imgtestlib: generate log_section ID on __enter__ The log_section's __init__() is called once per instance of the decorator itself, so multiple calls to a decorated method (e.g. build()) uses the same ID. Generate the ID when entering the context instead so that multiple invocations of the same function use different IDs. --- test/scripts/imgtestlib/gitlab.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/scripts/imgtestlib/gitlab.py b/test/scripts/imgtestlib/gitlab.py index 903501d299..6286782e50 100644 --- a/test/scripts/imgtestlib/gitlab.py +++ b/test/scripts/imgtestlib/gitlab.py @@ -42,10 +42,11 @@ def print_section_end(name: str): class log_section(contextlib.ContextDecorator): def __init__(self, message): - self._id = str(uuid.uuid4()) + self._id = "" self._message = message def __enter__(self): + self._id = str(uuid.uuid4()) print_section_start(self._id, self._message) def __exit__(self, *_): From 1e1f557e3c40df9acf57c51ded49aa03f89fd1ae Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Wed, 10 Jun 2026 12:42:04 +0200 Subject: [PATCH 10/10] WIP: disable local VM boot tests These boot tests generate a lot of output and take too long. I want to see what a full run looks like with only cloud boot tests. --- test/scripts/imgtestlib/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/scripts/imgtestlib/core.py b/test/scripts/imgtestlib/core.py index 676efbd500..b89e9d2eb0 100644 --- a/test/scripts/imgtestlib/core.py +++ b/test/scripts/imgtestlib/core.py @@ -35,8 +35,8 @@ "cloud-ec2", ], "x86_64": [ - "image-installer", "minimal-installer", "network-installer", - "qcow2", "generic-qcow2", "cloud-qcow2", + # "image-installer", "minimal-installer", "network-installer", + # "qcow2", "generic-qcow2", "cloud-qcow2", "wsl", "generic-wsl", ] }