fi
# Optional variables
-INSTANCE_START_TIMEOUT="${INSTANCE_START_TIMEOUT:-30}"
+INSTANCE_START_TIMEOUT="${INSTANCE_START_TIMEOUT:-120}"
VM_ARG=()
# Install lxd-client
# Get go
apt-get install -y wget
-wget "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -O - | tar -C /usr/local -xzf -
+wget -q "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -O - | tar -C /usr/local -xzf -
export PATH="${PATH}:/usr/local/go/bin"
# Install distrobuilder
)
IMAGE_FILE=''
for IMAGE_DIR in "${IMAGE_DIRS[@]}" ; do
+ for EXTENSION in "${EXTENSIONS[@]}" ; do
+ if [ -f "${IMAGE_DIR}/${OS}-${RELEASE}.${EXTENSION}" ] ; then
+ IMAGE_FILE="${IMAGE_DIR}/${OS}-${RELEASE}.${EXTENSION}"
+ break 2;
+ fi
+ done
for EXTENSION in "${EXTENSIONS[@]}" ; do
if [ -f "${IMAGE_DIR}/${OS}.${EXTENSION}" ] ; then
IMAGE_FILE="${IMAGE_DIR}/${OS}.${EXTENSION}"
fail 1 "Unable to find image file for '${OS}' in ${IMAGE_DIRS[@]}"
fi
+if grep -q -E 'XX[A-Za-z0-9_]+XX' "${IMAGE_FILE}" ; then
+ while read -r VAR ; do
+ echo "${VAR}"
+ SHELLVAR=$(echo "${VAR}" | sed 's/^XX//g' | sed 's/XX$//g')
+ set +x
+ sed -i "s/${VAR}/${!SHELLVAR:-VARIABLENOTFOUND}/g" "${IMAGE_FILE}"
+ set -x
+ done < <(grep -E -o 'XX[A-Za-z0-9_]+XX' "${IMAGE_FILE}")
+fi
+
DISTROBUILDER_ARGS=(
distrobuilder
build-incus
rm -rf "${TMP_DIR}"
fi
-lxc image import "${BUILD_DIR}/incus.tar.xz" "${ROOTFS}" --alias="${IMAGE_NAME}" ci:
+# When using `lxc image import` two images cannot have the same alias -
+# only the last image imported will keep the alias. Therefore, the
+# image type is appended as part of the alias.
+IMAGE_NAME="${IMAGE_NAME}/${IMAGE_TYPE}"
+
+if FINGERPRINT=$(lxc image import "${BUILD_DIR}/incus.tar.xz" "${ROOTFS}" 2>&1 | grep -E -o '[A-Fa-f0-9]{64}') ; then
+ echo "Image imported with fingerprint '${FINGERPRINT}'"
+else
+ fail 1 "No fingerprint for imported image"
+fi
if [[ "${TEST}" == "true" ]] ; then
set +e
INSTANCE_NAME=''
- if INSTANCE_NAME="$(lxc -q launch -e ${VM_ARG[@]} -p default -p "${LXD_INSTANCE_PROFILE}" "${IMAGE_NAME}")" ; then
+ if INSTANCE_NAME="$(lxc -q launch -e ${VM_ARG[@]} -p default -p "${LXD_INSTANCE_PROFILE}" "${FINGERPRINT}")" ; then
INSTANCE_NAME="$(echo "${INSTANCE_NAME}" | cut -d':' -f2 | tr -d ' ')"
CLEANUP+=(
- "lxc stop ${INSTANCE_NAME}"
+ "lxc stop -f ${INSTANCE_NAME}"
)
else
- fail 1 "Failed to launch instance using image '${IMAGE_NAME}'"
+ fail 1 "Failed to launch instance using image '${FINGERPRINT}'"
fi
TIME_REMAINING="${INSTANCE_START_TIMEOUT}"
INSTANCE_STATUS=''
done
set -e
fi
+
+lxc image alias delete "${IMAGE_NAME}" || true
+lxc image alias create "${IMAGE_NAME}" "${FINGERPRINT}"