You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
deployment-iso/wrapper.sh

125 lines
4.3 KiB

#!/bin/bash
set -eu -o pipefail
# sanity checks
if [ -z "${osversion:-}" ]; then
echo "Error: osversion is unset, please set to supported Debian/release (like 'trixie' or 'auto')" >&2
exit 1
fi
if [ -z "${release:-}" ]; then
echo "Error: release is unset, please set to supported Sipwise release (like 'mr13.5.1' or 'trunk')" >&2
exit 1
fi
if ! [ -d grml_build ] ; then
echo "Error: grml_build doesn't exist, executing outside deployment-iso directory?" >&2
exit 1
fi
# ensure that we're running it manually inside deployment-iso,
# or we're running it from within Jenkins
if [ "$(basename "$(pwd)")" = "deployment-iso" ] ; then
echo "*** Looks we're running locally inside deployment-iso directory ***"
elif [ -n "${WORKSPACE:-}" ] && [ "$(basename "$(pwd)")" = "source" ] ; then
echo "*** Looks we're running inside Jenkins ***"
else
echo "Error: you need to run this inside the deployment-iso directory or from within Jenkins" >&2
exit 1
fi
# derive Debian release from grml_build/Dockerfile if osversion is set to "auto"
if [[ "${osversion}" == 'auto' ]]; then
osversion="$( sed -rn 's|^FROM docker.mgm.sipwise.com/sipwise-([A-Za-z0-9]+):.+$|\1|p' grml_build/Dockerfile )"
fi
if [ -z "${WORKSPACE:-}" ] ; then
docker_image="grml-sipwise"
echo "*** Assuming local build with docker image '${docker_image}' ***"
else
echo "*** Looks like we are running inside Jenkins environment ***"
docker_repo=${docker_repo:-docker.mgm.sipwise.com}
docker_repo_port=${docker_repo_port:-5000}
docker_name="grml-build-${osversion}"
docker_tag="${dockertag:-latest}" # support custom build param via grml-build-iso Jenkins job
docker_image="${docker_repo}:${docker_repo_port}/${docker_name}:${docker_tag}"
echo "*** Pulling ${docker_image} docker image ***"
docker pull "${docker_image}"
fi
if [ -z "${osversion:-}" ]; then
echo "Can not detect osversion, exiting" >&2
exit 1
fi
declare build_time
build_time="$(date +%Y%m%d_%H%M%S)"
# misc variables
fai_config='/code/grml-live/config/'
outside_fai_config="${PWD}/grml_build/config/"
debian_bootstrap_url="https://debian.sipwise.com/debian/"
iso_image_name="grml-sipwise-${osversion}-${build_time}.iso"
if [[ -n "${repo_date:-}" ]]; then
iso_image_name="grml-sipwise-${osversion}-${repo_date}_${build_time}.iso"
fi
# write apt sources
source_list_path='etc/apt/sources.list.d/sipwise.list'
repo_addr="deb https://deb.sipwise.com/autobuild release-trunk-${osversion} main"
if [[ "${release}" != 'trunk' ]]; then
repo_addr="deb https://deb.sipwise.com/spce/${release} ${osversion} main"
fi
echo "${repo_addr}" > "${outside_fai_config}files/SIPWISE/${source_list_path}"
# get the puppet public key, so no need to download it in deployment.sh
puppet_key='puppet.gpg'
wget -O "${outside_fai_config}/files/PUPPETLABS/root/${puppet_key}" https://deb.sipwise.com/files/puppetlabs-pubkey-2025.gpg
use_wayback="false"
if [[ -n "${repo_date:-}" ]]; then
use_wayback="true"
echo "enabling wayback option, as repo_date parameter is set to '${repo_date}'"
fi
build_command=''
build_command+=" cp -rv /grml/config/ /code/grml-live/"
build_command+=" && ulimit -n 1048576" # workaround to fix apt/apt-mark performance issue
build_command+=" && GRML_NAME=grml64-small"
build_command+=" CHROOT_OUTPUT=/root/grml_chroot"
build_command+=" BOOTSTRAP_MIRROR='${debian_bootstrap_url}'"
build_command+=" LIVE_CONF=/code/grml-live/etc/grml/grml-live.conf"
build_command+=" GRML_FAI_CONFIG=${fai_config}"
build_command+=" ./grml-live"
build_command+=" -s '${osversion}'"
build_command+=" -a amd64"
build_command+=" -i '${iso_image_name}'"
build_command+=" -c SIPWISE,PUPPETLABS"
build_command+=" -o /grml/"
build_command+=" -r 'grml-sipwise-${osversion}'"
build_command+=" -v '${release}'"
build_command+=" -R"
build_command+=" -F"
if "${use_wayback}"; then
build_command+=" -w '${repo_date}'"
fi
build_command+=" && cd /grml/grml_isos/"
build_command+=" && sha1sum '${iso_image_name}' > '${iso_image_name}.sha1'"
build_command+=" && md5sum '${iso_image_name}' > '${iso_image_name}.md5'"
echo "System information:"
uname -a
lsb_release -a
docker --version
dpkg -l | grep docker
echo "Build command is:"
echo "${build_command}"
docker run --rm \
-v "$(pwd)":/deployment-iso/ \
-v "$(pwd)/grml_build/":/grml/ \
"${docker_image}" \
/bin/bash -c "${build_command}"