Skip to content

Commit

Permalink
Merge pull request kubevirt#9971 from zhlhahaha/2953
Browse files Browse the repository at this point in the history
push multiarch manifest for utility images
  • Loading branch information
kubevirt-bot authored Jun 27, 2023
2 parents be9077d + 96cc9f0 commit d89207b
Show file tree
Hide file tree
Showing 3 changed files with 170 additions and 25 deletions.
146 changes: 141 additions & 5 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,6 @@ container_bundle(
# heads up: docker_push is loaded from contrib:push-all, while container_push is loaded earlier from container:container
load("@io_bazel_rules_docker//contrib:push-all.bzl", "docker_push")

docker_push(
name = "push-other-images",
bundle = ":build-other-images",
)

# we need to push virt images with the rule from container:container in order to get the digest file
container_push(
name = "push-virt-operator",
Expand Down Expand Up @@ -322,6 +317,147 @@ container_push(
tag = "$(container_tag)",
)

# The following container_push list is synced with the images in container_bundle "build-other-images".
# cmd images
container_push(
name = "push-example-hook-sidecar",
format = "Docker",
image = "//cmd/example-hook-sidecar:example-hook-sidecar-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)example-hook-sidecar",
tag = "$(container_tag)",
)

container_push(
name = "push-example-disk-mutation-hook-sidecar",
format = "Docker",
image = "//cmd/example-disk-mutation-hook-sidecar:example-disk-mutation-hook-sidecar-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)example-disk-mutation-hook-sidecar",
tag = "$(container_tag)",
)

container_push(
name = "push-example-cloudinit-hook-sidecar",
format = "Docker",
image = "//cmd/example-cloudinit-hook-sidecar:example-cloudinit-hook-sidecar-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)example-cloudinit-hook-sidecar",
tag = "$(container_tag)",
)

# container-disk images
container_push(
name = "push-alpine-container-disk-demo",
format = "Docker",
image = "//containerimages:alpine-container-disk-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)alpine-container-disk-demo",
tag = "$(container_tag)",
)

container_push(
name = "push-cirros-container-disk-demo",
format = "Docker",
image = "//containerimages:cirros-container-disk-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)cirros-container-disk-demo",
tag = "$(container_tag)",
)

container_push(
name = "push-cirros-custom-container-disk-demo",
format = "Docker",
image = "//containerimages:cirros-custom-container-disk-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)cirros-custom-container-disk-demo",
tag = "$(container_tag)",
)

container_push(
name = "push-virtio-container-disk",
format = "Docker",
image = "//containerimages:virtio-container-disk-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)virtio-container-disk",
tag = "$(container_tag)",
)

# Kernel boot container
container_push(
name = "push-alpine-ext-kernel-boot-demo",
format = "Docker",
image = "//containerimages:alpine-ext-kernel-boot-demo-container",
registry = "$(container_prefix)",
repository = "$(image_prefix)alpine-ext-kernel-boot-demo",
tag = "$(container_tag)",
)

# Customized container-disk images
container_push(
name = "push-fedora-with-test-tooling-container-disk",
format = "Docker",
image = "//containerimages:fedora-with-test-tooling",
registry = "$(container_prefix)",
repository = "$(image_prefix)fedora-with-test-tooling-container-disk",
tag = "$(container_tag)",
)

container_push(
name = "push-alpine-with-test-tooling-container-disk",
format = "Docker",
image = "//containerimages:alpine-with-test-tooling",
registry = "$(container_prefix)",
repository = "$(image_prefix)alpine-with-test-tooling-container-disk",
tag = "$(container_tag)",
)

container_push(
name = "push-fedora-realtime-container-disk",
format = "Docker",
image = "//containerimages:fedora-realtime",
registry = "$(container_prefix)",
repository = "$(image_prefix)fedora-realtime-container-disk",
tag = "$(container_tag)",
)

# testing images
container_push(
name = "push-disks-images-provider",
format = "Docker",
image = "//images/disks-images-provider:disks-images-provider-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)disks-images-provider",
tag = "$(container_tag)",
)

container_push(
name = "push-nfs-server",
format = "Docker",
image = "//images/nfs-server:nfs-server-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)nfs-server",
tag = "$(container_tag)",
)

container_push(
name = "push-vm-killer",
format = "Docker",
image = "//images/vm-killer:vm-killer-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)vm-killer",
tag = "$(container_tag)",
)

container_push(
name = "push-winrmcli",
format = "Docker",
image = "//images/winrmcli:winrmcli-image",
registry = "$(container_prefix)",
repository = "$(image_prefix)winrmcli",
tag = "$(container_tag)",
)

genrule(
name = "build-virtctl",
srcs = [
Expand Down
2 changes: 1 addition & 1 deletion hack/bazel-push-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ source hack/common.sh
source hack/bootstrap.sh
source hack/config.sh

PUSH_TARGETS=(${PUSH_TARGETS:-other-images virt-operator virt-api virt-controller virt-handler virt-launcher virt-exportserver virt-exportproxy conformance libguestfs-tools pr-helper})
PUSH_TARGETS=(${PUSH_TARGETS:-virt-operator virt-api virt-controller virt-handler virt-launcher virt-exportserver virt-exportproxy conformance libguestfs-tools pr-helper example-hook-sidecar example-disk-mutation-hook-sidecar example-cloudinit-hook-sidecar alpine-container-disk-demo cirros-container-disk-demo cirros-custom-container-disk-demo virtio-container-disk alpine-ext-kernel-boot-demo fedora-with-test-tooling-container-disk alpine-with-test-tooling-container-disk fedora-realtime-container-disk disks-images-provider nfs-server vm-killer winrmcli})

for tag in ${docker_tag} ${docker_tag_alt}; do
for target in ${PUSH_TARGETS[@]}; do
Expand Down
47 changes: 28 additions & 19 deletions hack/push-container-manifest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,37 @@ fi

fail_if_cri_bin_missing

function podman_push_manifest() {
image=$1
# FIXME: Workaround https://github.com/containers/podman/issues/18360 and remove once https://github.com/containers/podman/commit/bab4217cd16be609ac35ccf3061d1e34f787856f is released
echo ${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
for ARCH in ${BUILD_ARCH//,/ }; do
FORMATED_ARCH=$(format_archname ${ARCH})
digest=$(cat ${DIGESTS_DIR}/${FORMATED_ARCH}/bazel-bin/push-$image.digest)
${KUBEVIRT_CRI} manifest add ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${DOCKER_PREFIX}/${image}@${digest}
done
${KUBEVIRT_CRI} manifest push --all ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
}

function docker_push_manifest() {
image=$1
MANIFEST_IMAGES=""
for ARCH in ${BUILD_ARCH//,/ }; do
FORMATED_ARCH=$(format_archname ${ARCH})
digest=$(cat ${DIGESTS_DIR}/${FORMATED_ARCH}/bazel-bin/push-$image.digest)
MANIFEST_IMAGES="${MANIFEST_IMAGES} --amend ${DOCKER_PREFIX}/${image}@${digest}"
done
echo ${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${MANIFEST_IMAGES}
${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${MANIFEST_IMAGES}
${KUBEVIRT_CRI} manifest push ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
}

export DOCKER_CLI_EXPERIMENTAL=enabled
for image in $(find ${DIGESTS_DIR}/*/bazel-bin/ -name '*.digest' -printf '%f\n' | sed s/^push-//g | sed s/\.digest$//g | sort -u); do
MANIFEST_IMAGES=""
if [ "${KUBEVIRT_CRI}" = "podman" ]; then
# FIXME: Workaround https://github.com/containers/podman/issues/18360 and remove once https://github.com/containers/podman/commit/bab4217cd16be609ac35ccf3061d1e34f787856f is released
echo ${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
for ARCH in ${BUILD_ARCH//,/ }; do
ARCH=$(format_archname ${ARCH})
digest=$(cat ${DIGESTS_DIR}/${ARCH}/bazel-bin/push-$image.digest)
${KUBEVIRT_CRI} manifest add ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${DOCKER_PREFIX}/${image}@${digest}
done
${KUBEVIRT_CRI} manifest push --all ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
podman_push_manifest $image
else
for ARCH in ${BUILD_ARCH//,/ }; do
ARCH=$(format_archname ${ARCH})
digest=$(cat ${DIGESTS_DIR}/${ARCH}/bazel-bin/push-$image.digest)
MANIFEST_IMAGES="${MANIFEST_IMAGES} --amend ${DOCKER_PREFIX}/${image}@${digest}"
done

echo ${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${MANIFEST_IMAGES}
${KUBEVIRT_CRI} manifest create ${DOCKER_PREFIX}/${image}:${DOCKER_TAG} ${MANIFEST_IMAGES}
${KUBEVIRT_CRI} manifest push ${DOCKER_PREFIX}/${image}:${DOCKER_TAG}
docker_push_manifest $image
fi
done

0 comments on commit d89207b

Please sign in to comment.