fi
if [[ ${CI_CONTAINER} != "true" ]] ; then : "${VERSION:?}"; fi
+# set container engine
+CONTAINER_ENGINE=${CONTAINER_ENGINE:-podman}
+if [[ ${CONTAINER_ENGINE} != "podman" && ${CONTAINER_ENGINE} != "docker" ]]; then
+ echo "CONTAINER_ENGINE must be 'podman' or 'docker', current: ${CONTAINER_ENGINE}"
+ exit 1
+fi
+
# check for valid repo auth (if pushing)
repopath=${CONTAINER_REPO_HOSTNAME}/${CONTAINER_REPO_ORGANIZATION}/${CONTAINER_REPO}
MINIMAL_IMAGE=${repopath}:minimal-test
if [[ ${NO_PUSH} != "true" ]] ; then
- podman rmi ${MINIMAL_IMAGE} || true
- echo "FROM scratch" | podman build -f - -t ${MINIMAL_IMAGE}
- if ! podman push ${MINIMAL_IMAGE} ; then
+ ${CONTAINER_ENGINE} rmi ${MINIMAL_IMAGE} || true
+ echo "FROM scratch" | ${CONTAINER_ENGINE} build -f - -t ${MINIMAL_IMAGE}
+ if ! ${CONTAINER_ENGINE} push ${MINIMAL_IMAGE} ; then
echo "Not authenticated to ${repopath}; need docker/podman login?"
exit 1
fi
- podman rmi ${MINIMAL_IMAGE} | true
+ ${CONTAINER_ENGINE} rmi ${MINIMAL_IMAGE} | true
fi
if [[ -z "${CEPH_GIT_REPO}" ]] ; then
# BRANCH will be, say, origin/main. remove <remote>/
BRANCH=${BRANCH##*/}
-# podman build only supports secret files.
-# This must be removed after podman build
+# podman/docker build only supports secret files.
+# This must be removed after podman/docker build
touch prerelease.secret.txt
chmod 600 prerelease.secret.txt
echo -e "\
PRERELEASE_USERNAME=${PRERELEASE_USERNAME}\n
PRERELEASE_PASSWORD=${PRERELEASE_PASSWORD}\n " > prerelease.secret.txt
-podman build --pull=newer --squash -f $CFILE -t build.sh.output \
- --build-arg FROM_IMAGE=${FROM_IMAGE:-quay.io/centos/centos:stream9} \
- --build-arg CEPH_SHA1=${CEPH_SHA1} \
- --build-arg CEPH_GIT_REPO=${CEPH_GIT_REPO} \
- --build-arg CEPH_REF=${BRANCH:-main} \
- --build-arg OSD_FLAVOR=${FLAVOR:-default} \
- --build-arg CI_CONTAINER=${CI_CONTAINER:-default} \
- --build-arg CUSTOM_CEPH_REPO_URL="${CUSTOM_CEPH_REPO_URL}" \
- --secret=id=prerelease_creds,src=./prerelease.secret.txt \
- 2>&1
+CONTAINER_BUILD_ARGS=(
+ --squash
+ -f "$CFILE"
+ -t build.sh.output
+ --build-arg FROM_IMAGE="${FROM_IMAGE:-quay.io/centos/centos:stream9}"
+ --build-arg CEPH_SHA1="${CEPH_SHA1}"
+ --build-arg CEPH_GIT_REPO="${CEPH_GIT_REPO}"
+ --build-arg CEPH_REF="${BRANCH:-main}"
+ --build-arg OSD_FLAVOR="${FLAVOR:-default}"
+ --build-arg CI_CONTAINER="${CI_CONTAINER:-default}"
+ --build-arg CUSTOM_CEPH_REPO_URL="${CUSTOM_CEPH_REPO_URL}"
+ "--secret=id=prerelease_creds,src=./prerelease.secret.txt"
+)
+
+if [[ ${CONTAINER_ENGINE} == "podman" ]]; then
+ CMD=("${CONTAINER_ENGINE}" build --pull=newer "${CONTAINER_BUILD_ARGS[@]}")
+ echo "+ ${CMD[*]}"
+ "${CMD[@]}" 2>&1
+else
+ CMD=("${CONTAINER_ENGINE}" build --pull "${CONTAINER_BUILD_ARGS[@]}" .)
+ echo "+ DOCKER_BUILDKIT=1 ${CMD[*]}"
+ DOCKER_BUILDKIT=1 "${CMD[@]}" 2>&1
+fi
rm ./prerelease.secret.txt
-image_id=$(podman image ls localhost/build.sh.output --format '{{.ID}}')
+# get image id
+image_id=$(${CONTAINER_ENGINE} image ls build.sh.output --format '{{.ID}}')
+if [[ -z "${image_id}" ]]; then
+ image_id=$(${CONTAINER_ENGINE} image ls localhost/build.sh.output --format '{{.ID}}' || true)
+fi
+if [[ -z "${image_id}" ]]; then
+ echo "ERROR: build.sh.output image not found!"
+ exit 1
+fi
# grab useful image attributes for building the tag
#
# so that vars will get the output of the first command, newline, output
# of the second command
#
-vars="$(podman inspect -f '{{printf "export CEPH_CONTAINER_ARCH=%v" .Architecture}}' ${image_id})
-$(podman inspect -f '{{range $index, $value := .Config.Env}}export CEPH_CONTAINER_{{$value}}{{println}}{{end}}' ${image_id})"
+vars="$(${CONTAINER_ENGINE} inspect -f '{{printf "export CEPH_CONTAINER_ARCH=%v" .Architecture}}' ${image_id})
+$(${CONTAINER_ENGINE} inspect -f '{{range $index, $value := .Config.Env}}export CEPH_CONTAINER_{{$value}}{{println}}{{end}}' ${image_id})"
vars="$(echo "${vars}" | grep -v PATH)"
eval ${vars}
sha1_repo_tag=${sha1_repo_tag}-arm64
fi
- podman tag ${image_id} ${full_repo_tag}
- podman tag ${image_id} ${branch_repo_tag}
- podman tag ${image_id} ${sha1_repo_tag}
+ ${CONTAINER_ENGINE} tag ${image_id} ${full_repo_tag}
+ ${CONTAINER_ENGINE} tag ${image_id} ${branch_repo_tag}
+ ${CONTAINER_ENGINE} tag ${image_id} ${sha1_repo_tag}
if [[ -z "${NO_PUSH}" ]] ; then
- podman push ${full_repo_tag}
- podman push ${branch_repo_tag}
- podman push ${sha1_repo_tag}
+ ${CONTAINER_ENGINE} push ${full_repo_tag}
+ ${CONTAINER_ENGINE} push ${branch_repo_tag}
+ ${CONTAINER_ENGINE} push ${sha1_repo_tag}
if [[ ${REMOVE_LOCAL_IMAGES} == "true" ]] ; then
- podman rmi -f ${full_repo_tag} ${branch_repo_tag} ${sha1_repo_tag}
+ ${CONTAINER_ENGINE} rmi -f ${full_repo_tag} ${branch_repo_tag} ${sha1_repo_tag}
fi
fi
else
#
version_tag=${repopath}:v${VERSION}-${builddate}
- podman tag ${image_id} ${version_tag}
+ ${CONTAINER_ENGINE} tag ${image_id} ${version_tag}
if [[ -z "${NO_PUSH}" ]] ; then
- podman push ${version_tag}
+ ${CONTAINER_ENGINE} push ${version_tag}
if [[ ${REMOVE_LOCAL_IMAGES} == "true" ]] ; then
- podman rmi -f ${version_tag}
+ ${CONTAINER_ENGINE} rmi -f ${version_tag}
fi
fi
-fi
-
+fi
\ No newline at end of file