meta-virtualization/classes/image-oci-sloci-image.inc
Bruce Ashfield 96c47ad0b8 oci-images: create backend .inc files
As part of allowing different types of oci images to be created,
we split our IMG_cmd into .inc files that can then be specific to
the selected type.

For the umoci backend: We can take the same options as sloci
expects and use umoci to create images.

The resulting OCI image is similar, but by using umoci, we set
the stage to do multi-tag, or multi-layer images in the future.

But for now, we are functionally equivalent to the sloci backend.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2021-07-19 13:36:17 -04:00

68 lines
2.2 KiB
PHP

IMAGE_CMD_oci() {
sloci_options=""
bbdebug 1 "OCI image settings:"
bbdebug 1 " author: ${OCI_IMAGE_AUTHOR}"
bbdebug 1 " author email: ${OCI_IMAGE_AUTHOR_EMAIL}"
bbdebug 1 " tag: ${OCI_IMAGE_TAG}"
bbdebug 1 " arch: ${OCI_IMAGE_ARCH}"
bbdebug 1 " subarch: ${OCI_IMAGE_SUBARCH}"
bbdebug 1 " entrypoint: ${OCI_IMAGE_ENTRYPOINT}"
bbdebug 1 " entrypoing args: ${OCI_IMAGE_ENTRYPOINT_ARGS}"
bbdebug 1 " labels: ${OCI_IMAGE_LABELS}"
bbdebug 1 " uid: ${OCI_IMAGE_RUNTIME_UID}"
bbdebug 1 " working dir: ${OCI_IMAGE_WORKINGDIR}"
bbdebug 1 " env vars: ${OCI_IMAGE_ENV_VARS}"
bbdebug 1 " ports: ${OCI_IMAGE_PORTS}"
# Change into the image deploy dir to avoid having any output operations capture
# long directories or the location.
cd ${IMGDEPLOYDIR}
oci_image_label_options=""
if [ -n "${OCI_IMAGE_LABELS}" ]; then
for l in ${OCI_IMAGE_LABELS}; do
oci_image_label_options="${oci_image_label_options} --label ${l}"
done
fi
oci_image_env_options=""
if [ -n "${OCI_IMAGE_ENV_VARS}" ]; then
for l in ${OCI_IMAGE_ENV_VARS}; do
oci_image_env_options="${oci_image_env_options} --env ${l}"
done
fi
oci_image_port_options=""
if [ -n "${OCI_IMAGE_PORTS}" ]; then
for l in ${OCI_IMAGE_PORTS}; do
oci_image_port_options="${oci_image_port_options} --port ${l}"
done
fi
if [ -n "${OCI_IMAGE_RUNTIME_UID}" ]; then
oci_image_user_options="--user ${OCI_IMAGE_RUNTIME_UID}"
fi
if [ -n "${OCI_IMAGE_WORKINGDIR}" ]; then
oci_image_working_dir_options="--working-dir ${OCI_IMAGE_WORKINGDIR}"
fi
if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
sloci_options="$sloci_options --tar"
fi
# options that always appear are required for a valid oci container image
# others are optional based on settings.
sloci-image $sloci_options \
--arch ${OCI_IMAGE_ARCH} \
--arch-variant "${OCI_IMAGE_SUBARCH}" \
--entrypoint ${OCI_IMAGE_ENTRYPOINT} \
--cmd "${OCI_IMAGE_ENTRYPOINT_ARGS}" \
--author ${OCI_IMAGE_AUTHOR_EMAIL} \
${oci_image_user_options} \
${oci_image_label_options} \
${oci_image_env_options} \
${oci_image_working_dir_options} \
${oci_image_port_options} \
${IMAGE_ROOTFS} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci:${OCI_IMAGE_TAG}
}