aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2022-03-15 10:40:51 +0000
committerDaniel P. Berrangé <berrange@redhat.com>2022-05-11 13:22:21 +0100
commitdfcee653ec568e54c067ba2b702ef7a059752187 (patch)
tree1110f02b7ed8df374447417f90c7df8bb16eef17
parenta8d5a434ec22a1e31519766bf49cbbf97f60de70 (diff)
downloadlibvirt-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.py89
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,