diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2022-03-15 10:40:51 +0000 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2022-05-11 13:22:21 +0100 |
commit | dfcee653ec568e54c067ba2b702ef7a059752187 (patch) | |
tree | 1110f02b7ed8df374447417f90c7df8bb16eef17 | |
parent | a8d5a434ec22a1e31519766bf49cbbf97f60de70 (diff) | |
download | libvirt-ci-dfcee653ec568e54c067ba2b702ef7a059752187.zip libvirt-ci-dfcee653ec568e54c067ba2b702ef7a059752187.tar.gz libvirt-ci-dfcee653ec568e54c067ba2b702ef7a059752187.tar.bz2 |
lcitool/manifest: share templates between native and cross builds
The gitlab config we generate for native and cross builds is very
similar. While the benefits of sharing the code is fairly minor
right now, it will be quite compelling with later refactoring.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
-rw-r--r-- | guests/lcitool/lcitool/gitlab.py | 89 |
1 files changed, 50 insertions, 39 deletions
diff --git a/guests/lcitool/lcitool/gitlab.py b/guests/lcitool/lcitool/gitlab.py index cc4353e..8931c34 100644 --- a/guests/lcitool/lcitool/gitlab.py +++ b/guests/lcitool/lcitool/gitlab.py @@ -35,22 +35,23 @@ def container_template(namespace, project, cidir): """) -def native_build_template(): +def _build_template(template, image): return textwrap.dedent( - """ - .gitlab_native_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + f""" + {template}: + image: $CI_REGISTRY_IMAGE/{image}:latest stage: builds """) +def native_build_template(): + return _build_template(".gitlab_native_build_job", + "ci-$NAME") + + def cross_build_template(): - return textwrap.dedent( - """ - .gitlab_cross_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest - stage: builds - """) + return _build_template(".gitlab_cross_build_job", + "ci-$NAME-cross-$CROSS") def cirrus_template(cidir): @@ -155,30 +156,31 @@ def clang_format_job(): """) -def native_container_job(target, allow_failure): +def _container_job(target, arch, image, allow_failure): allow_failure = str(allow_failure).lower() return textwrap.dedent( f""" - x86_64-{target}-container: + {arch}-{target}-container: extends: .container_job allow_failure: {allow_failure} variables: - NAME: {target} + NAME: {image} """) -def cross_container_job(target, arch, allow_failure): - allow_failure = str(allow_failure).lower() +def native_container_job(target, allow_failure): + return _container_job(target, + "x86_64", + f"{target}", + allow_failure) - return textwrap.dedent( - f""" - {arch}-{target}-container: - extends: .container_job - allow_failure: {allow_failure} - variables: - NAME: {target}-cross-{arch} - """) + +def cross_container_job(target, arch, allow_failure): + return _container_job(target, + arch, + f"{target}-cross-{arch}", + allow_failure) def format_variables(variables): @@ -214,37 +216,46 @@ def merge_vars(system, user): return {**user, **system} -def native_build_job(target, suffix, variables, template, allow_failure, artifacts): +def _build_job(target, arch, suffix, variables, template, allow_failure, artifacts): allow_failure = str(allow_failure).lower() - jobvars = merge_vars({ - "NAME": target, - }, variables) return textwrap.dedent( f""" - x86_64-{target}{suffix}: + {arch}-{target}{suffix}: extends: {template} needs: - - x86_64-{target}-container + - {arch}-{target}-container allow_failure: {allow_failure} - """) + format_variables(jobvars) + format_artifacts(artifacts) + """) + format_variables(variables) + format_artifacts(artifacts) + + +def native_build_job(target, suffix, variables, template, allow_failure, artifacts): + jobvars = merge_vars({ + "NAME": target, + }, variables) + + return _build_job(target, + "x86_64", + suffix, + jobvars, + template, + allow_failure, + artifacts) def cross_build_job(target, arch, suffix, variables, template, allow_failure, artifacts): - allow_failure = str(allow_failure).lower() jobvars = merge_vars({ "NAME": target, "CROSS": arch }, variables) - return textwrap.dedent( - f""" - {arch}-{target}{suffix}: - extends: {template} - needs: - - {arch}-{target}-container - allow_failure: {allow_failure} - """) + format_variables(jobvars) + format_artifacts(artifacts) + return _build_job(target, + arch, + suffix, + jobvars, + template, + allow_failure, + artifacts) def cirrus_build_job(target, instance_type, image_selector, image_name, |