#! /usr/bin/env bash CD_DNS_SERVERS=( '9.9.9.9' ) CD_REPOSITORY='rwx.work/cd' CD_DNS_FILE='/etc/resolv.conf' case "${CD_OS_NAME}" in 'debian') case "${CD_OS_VERSION}" in 'bookworm') echo 'bookworm!' ;; *) echo 'CD_OS_VERSION' exit 2 ;; esac ;; *) echo 'CD_OS_NAME' exit 1 ;; esac CD_STEP=0 function cd_step { if [ "${1}" ] ; then ((CD_STEP++)) echo " ↕ ${CD_STEP} ↔ ${1} " fi } function cd_write { local file="${1}" local text="${2}" if [ "${file}" ] ; then echo -n "${text}" \ > "${file}" \ || exit fi } function cd_set_dns_resolving { local server local text='' cd_step "${FUNCNAME}" for server in "${CD_DNS_SERVERS[@]}" ; do text+="nameserver ${server} " done cd_write "${CD_DNS_FILE}" "${text}" } function cd_set_packages_repositories { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') cd_write '/etc/apt/sources.list' "\ deb https://deb.debian.org/debian bookworm main deb https://deb.debian.org/debian bookworm-backports main deb https://deb.debian.org/debian bookworm-updates main deb https://deb.debian.org/debian-security bookworm-security main " ;; *) exit 1 ;; esac } function cd_set_packages_configuration { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') cd_write '/etc/apt/apt.conf.d/apt.conf' "\ Acquire::Check-Valid-Until True; APT::Get::Show-Versions True; APT::Install-Recommends False; APT::Install-Suggests False; Dir::Etc::SourceParts \"\"; " ;; *) exit 1 ;; esac } function cd_set_https_verification_off { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') cd_write '/etc/apt/apt.conf.d/https' "\ Acquire::https::Verify-Peer False; " ;; *) exit 1 ;; esac } function cd_update_packages_catalog { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') apt-get update || exit ;; *) exit 1 ;; esac } function cd_install_package { if [ "${1}" ] ; then cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') apt-get install --yes "${1}" || exit ;; *) exit 1 ;; esac fi } function cd_install_ca { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') apt-get install --yes 'ca-certificates' || exit ;; *) exit 1 ;; esac } function cd_set_https_verification_on { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') rm '/etc/apt/apt.conf.d/https' ;; *) exit 1 ;; esac } function cd_upgrade_packages { cd_step "${FUNCNAME}" case "${CD_OS_NAME}" in 'debian') apt-get upgrade --yes || exit ;; *) exit 1 ;; esac } function cd_main { cd_set_dns_resolving cd_set_packages_repositories cd_set_packages_configuration cd_set_https_verification_off cd_update_packages_catalog cd_install_ca cd_set_https_verification_on cd_update_packages_catalog cd_upgrade_packages cd_step "install Git" apt-get install --yes 'git' \ || exit DIRECTORY="$(mktemp --directory)" \ || exit cd_step "clone Continuous Delivery" git clone \ "${GITHUB_SERVER_URL}/${CD_REPOSITORY}" \ "${DIRECTORY}" \ || exit cd_step "install Python" apt-get install --yes 'python3' \ || exit cd_step "clean package cache" apt-get clean \ || exit cd_step "bootstrap" "${DIRECTORY}/bootstrap.sh" } cd_main