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.
125 lines
4.3 KiB
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}"
|