Many moving parts and possible implementations currently obscure the best path to designing a multi-distribution, multi-version, and multi-arch kubevirt machine image publishing pipeline.
Known variables:
distribution flavor (name string)
sysprep
sysprep operations (list)
sysprep update (bool)
makefile execute (bool)
sysprep post_commands (list)
selinux-relabel (bool)
release_version (number string)
package install list (comma delineated string)
Architecture {arm64, amd64}
release_name
release_checksum
Known stages:
download
either on host or in build container
customization
sysprep install packages depends on matching host architecture
containerization
best if all architectures per flavor/version are containerized by buildx on single amd64 host
testing
depends on k8s node matching architecture
publishing
Dependencies:
sysprep install packages
must run on same host architecture
multi-arch image
best if buildx bake from both arch(s) sysprep'd images returned from sysprep hosts
If qcow2 images are built in series, circleci artifact caching allows for jobs to be chained together across multiple architectures as required while passing along the built artifacts of previous jobs.
TODO:
The final remaining difficulty is assigning and propagating correct variables per each job. An optimal scenario would allow maintaining all outcomes from a single json or yaml config run on a common core pipeline.
Problem:
Many moving parts and possible implementations currently obscure the best path to designing a multi-distribution, multi-version, and multi-arch kubevirt machine image publishing pipeline.
Known variables:
Known stages:
Dependencies:
If qcow2 images are built in series, circleci artifact caching allows for jobs to be chained together across multiple architectures as required while passing along the built artifacts of previous jobs.
TODO:
The final remaining difficulty is assigning and propagating correct variables per each job. An optimal scenario would allow maintaining all outcomes from a single json or yaml config run on a common core pipeline.