netdata_netdata/.github/scripts/pkg-test.sh

128 lines
3.3 KiB
Bash
Executable File

#!/bin/sh
SCRIPT_DIR="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd -P)"
install_debian_like() {
# This is needed to ensure package installs don't prompt for any user input.
export DEBIAN_FRONTEND=noninteractive
if apt-cache show netcat 2>&1 | grep -q "No packages found"; then
netcat="netcat-traditional"
else
netcat="netcat"
fi
apt-get update
# Install Netdata
# Strange quoting is required here so that glob matching works.
# shellcheck disable=SC2046
apt-get install -y $(find /netdata/artifacts -type f -name 'netdata*.deb' \
! -name '*dbgsym*' ! -name '*cups*' ! -name '*freeipmi*') || exit 3
# Install testing tools
apt-get install -y --no-install-recommends curl "${netcat}" jq || exit 1
}
install_fedora_like() {
# Using a glob pattern here because I can't reliably determine what the
# resulting package name will be (TODO: There must be a better way!)
PKGMGR="$( (command -v dnf > /dev/null && echo "dnf") || echo "yum")"
if [ "${PKGMGR}" = "dnf" ]; then
opts="--allowerasing"
fi
# Install Netdata
# Strange quoting is required here so that glob matching works.
"${PKGMGR}" install -y /netdata/artifacts/netdata*.rpm || exit 1
# Install testing tools
"${PKGMGR}" install -y curl nc jq || exit 1
}
install_centos() {
# Using a glob pattern here because I can't reliably determine what the
# resulting package name will be (TODO: There must be a better way!)
PKGMGR="$( (command -v dnf > /dev/null && echo "dnf") || echo "yum")"
if [ "${PKGMGR}" = "dnf" ]; then
opts="--allowerasing"
fi
# Install EPEL (needed for `jq`
"${PKGMGR}" install -y epel-release || exit 1
# Install Netdata
# Strange quoting is required here so that glob matching works.
"${PKGMGR}" install -y /netdata/artifacts/netdata*.rpm || exit 1
# Install testing tools
# shellcheck disable=SC2086
"${PKGMGR}" install -y ${opts} curl nc jq || exit 1
}
install_amazon_linux() {
PKGMGR="$( (command -v dnf > /dev/null && echo "dnf") || echo "yum")"
if [ "${PKGMGR}" = "dnf" ]; then
opts="--allowerasing"
fi
# Install Netdata
# Strange quoting is required here so that glob matching works.
"${PKGMGR}" install -y /netdata/artifacts/netdata*.rpm || exit 1
# Install testing tools
# shellcheck disable=SC2086
"${PKGMGR}" install -y ${opts} curl nc jq || exit 1
}
install_suse_like() {
# Using a glob pattern here because I can't reliably determine what the
# resulting package name will be (TODO: There must be a better way!)
# Install Netdata
# Strange quoting is required here so that glob matching works.
zypper install -y --allow-downgrade --allow-unsigned-rpm /netdata/artifacts/netdata*.rpm || exit 1
# Install testing tools
zypper install -y --allow-downgrade --no-recommends curl netcat-openbsd jq || exit 1
}
dump_log() {
cat ./netdata.log
}
case "${DISTRO}" in
debian | ubuntu)
install_debian_like
;;
fedora | oraclelinux)
install_fedora_like
;;
centos| centos-stream | rockylinux | almalinux)
install_centos
;;
amazonlinux)
install_amazon_linux
;;
opensuse)
install_suse_like
;;
*)
printf "ERROR: unsupported distro: %s_%s\n" "${DISTRO}" "${DISTRO_VERSION}"
exit 1
;;
esac
trap dump_log EXIT
/usr/sbin/netdata -D > ./netdata.log 2>&1 &
"${SCRIPT_DIR}/../../packaging/runtime-check.sh" || exit 1
trap - EXIT