In skupper today we build and publish x86_64 and arm64 images. The way we build and publish these is not ideal, and we could use the 2.0 version as an opportunity to improve.
Suggested outcome(s)
The images we test with (pending integration/e2e tests) should be the same images we publish. Today we completely rebuild images to push after CI passes.
All images contain stripped down statically linked skupper executable(s) that are appropriate for the base image.
Presently we produce a mix of results in this department: amd64 images have a dynamically linked skupper binaries baked into ubi9 images that were produced from a debian 12 based builder (asking for trouble), arm64 images have a static pure-go binary. We've taken similar steps for our skupper cli binary that we distribute.
All of the executables end up fairly large with debugging and dwarf symbols that could be stripped to shave ~20MB uncompressed. If somebody has ever installed gdb in container and attached to a running skupper process I'd be shocked.
Open Questions
We have been intentionally publishing docker formatted images over OCI images - maybe in order to support OCP 3? Can we move to oci images? does it matter?
Should we publish image tags with platform suffixes in addition to our main index/list images? i.e. quay.io/skupper/controller:2.0.0-linux-arm64
Should we publish test images on PR? (i.e. quay.io/skupper/dev/controller:ci-$(git rev-parse HEAD)) to make it easier for peers to review without checking out the branch and self-building images?
We are moving forward with publishing OCI artifacts for now
Skupper binaries in the images are now more consistent
CI images are ready and set up for out-of-process tests (that is tests ran on podman/docker/kind/minikube)
For now, no changes to publishing arch-specific image tags or image publish frequency, although releases now include a digests.yaml that could help (has per-platform image digests)
In skupper today we build and publish x86_64 and arm64 images. The way we build and publish these is not ideal, and we could use the 2.0 version as an opportunity to improve.
Suggested outcome(s)
The images we test with (pending integration/e2e tests) should be the same images we publish. Today we completely rebuild images to push after CI passes.
All images contain stripped down statically linked skupper executable(s) that are appropriate for the base image.
Open Questions
We have been intentionally publishing docker formatted images over OCI images - maybe in order to support OCP 3? Can we move to oci images? does it matter?
Should we publish image tags with platform suffixes in addition to our main index/list images? i.e. quay.io/skupper/controller:2.0.0-linux-arm64
Should we publish test images on PR? (i.e. quay.io/skupper/dev/controller:ci-$(git rev-parse HEAD)) to make it easier for peers to review without checking out the branch and self-building images?