
* Create build-the-builder.md Document the manual build of CDI builder helper container and typical make targets Signed-off-by: cfillekes <cfillekes@ibm.com> * Update doc/build-the-builder.md Co-authored-by: Alexander Wels <awels@redhat.com> Signed-off-by: cfillekes <cfilleke@redhat.com> --------- Signed-off-by: cfillekes <cfillekes@ibm.com> Signed-off-by: cfillekes <cfilleke@redhat.com> Co-authored-by: Alexander Wels <awels@redhat.com>
2.6 KiB
Build The KubeVirt CDI Builder Container
Native Build toolchain
- Install the prerequisites as in the instructions for building the KubeVirt builder container.
- Also install
jq
if the docker build utility you use ispodman-buildah
. - Build the containerized data importer builder container if you haven't already
Environment Variables and defaults
env variable | default | option or example |
---|---|---|
BUILD_ARCH | amd64 | s390x arm64 amd64 |
DOCKER_PREFIX | quay.io/kubevirt | icr.io/kubevirt, docker.io/ibm, ... |
QUAY_REPOSITORY | kubevirt-cdi-bazel-builder | |
UNTAGGED_BUILDER_IMAGE | quay.io/kubevirt/kubevirt-cdi-bazel-builder | ${DOCKER_PREFIX}/${QUAY_REPOSITORY} |
BUILDER_TAG | s390xTest01 |
An example of setting these environment variables would be:
export BUILD_ARCH=s390x
export DOCKER_PREFIX="icr.io/kubevirt"
export QUAY_REPOSITORY=kubevirt-cdi-bazel-builder
export UNTAGGED_BUILDER_IMAGE=${DOCKER_PREFIX}/${QUAY_REPOSITORY}
export BUILDER_TAG=s390xTest01
Manual build of the builder container
The point of this step is to build the CDI builder/helper container described in hack/build/docker/builder/Dockerfile
.
cd hack/build/docker/builder
The build can be conducted with either podman-buildah
or docker
.
With Podman-buildah
With podman-buildah the builder image can be built and pushed with:
buildah build --platform linux/${BUILD_ARCH} --manifest ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG} .
buildah manifest push --all ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG} docker://${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG}
and you can check the digest with:
podman inspect $(podman images | grep ${UNTAGGED_BUILDER_IMAGE} | grep ${BUILDER_TAG} | awk '{ print $3 }') | jq '.[]["Digest"]'
With docker
With docker, the builder image can be built and pushed with:
docker build --tag ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG} .
and you can check the digest with:
docker images --digests | grep ${UNTAGGED_BUILDER_IMAGE} | grep ${BUILDER_TA
G} | awk '{ print $4 }'
Make Target
make builder-push
both builds the KubeVirt CDI builder image and pushes it to the registry you specified in the environment variables (above); however the script only works when the following condition is false:
git diff-index --quiet HEAD~1 hack/build/docker
since the make target to build the builder is only intended to run during a post-submit job where the PR has squashed the candidate into a single commit.