summaryrefslogtreecommitdiffstats
path: root/.travis
diff options
context:
space:
mode:
authorAustin S. Hemmelgarn <austin@netdata.cloud>2021-03-15 08:31:16 -0400
committerGitHub <noreply@github.com>2021-03-15 08:31:16 -0400
commite54982b6c814d1c6e1dda456fcf691d9b829eb91 (patch)
tree8748ffc75bbc7413fb6ed059ad4cb0a3db619c5e /.travis
parent6757aa9239493589ea8f22a1db22aca62ce8259b (diff)
Docker-based packaging workflow in GitHub Actions. (#9964)
* Add a new GHA workflow for building and publishing binary packages. This greatly simplifies the package handling code, significantly reduces the amount of things we are running in Travis, adds better CI for package builds for PRs, finally eliminates LXC from any of our CI, and enables us to make further major improvements much easier. * Migrate repo cleanup to GHA and remove dead code. * Fix RPM package builds. * Fix DEB installation.
Diffstat (limited to '.travis')
-rw-r--r--.travis/package_management/build.sh32
-rwxr-xr-x.travis/package_management/build_judy.sh36
-rwxr-xr-x.travis/package_management/build_libuv.sh36
-rwxr-xr-x.travis/package_management/build_package_in_container.sh82
-rwxr-xr-x.travis/package_management/common.py182
-rwxr-xr-x.travis/package_management/configure_deb_lxc_environment.py90
-rwxr-xr-x.travis/package_management/configure_rpm_lxc_environment.py102
-rwxr-xr-x.travis/package_management/create_lxc_for_build.sh101
-rw-r--r--.travis/package_management/functions.sh33
-rwxr-xr-x.travis/package_management/old_package_purging.sh93
-rwxr-xr-x.travis/package_management/package_cloud_wrapper.sh48
-rwxr-xr-x.travis/package_management/prepare_packages.sh63
-rwxr-xr-x.travis/package_management/trigger_deb_lxc_build.py86
-rwxr-xr-x.travis/package_management/trigger_rpm_lxc_build.py55
-rwxr-xr-x.travis/package_management/yank_stale_pkg.sh35
-rwxr-xr-x.travis/trigger_package_build.sh20
-rwxr-xr-x.travis/trigger_package_generation.sh57
17 files changed, 20 insertions, 1131 deletions
diff --git a/.travis/package_management/build.sh b/.travis/package_management/build.sh
deleted file mode 100644
index bafaecc5a2..0000000000
--- a/.travis/package_management/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-
-UNPACKAGED_NETDATA_PATH="$1"
-LATEST_RELEASE_VERSION="$2"
-
-if [ -z "${LATEST_RELEASE_VERSION}" ]; then
- echo "Parameter 'LATEST_RELEASE_VERSION' not defined"
- exit 1
-fi
-
-if [ -z "${UNPACKAGED_NETDATA_PATH}" ]; then
- echo "Parameter 'UNPACKAGED_NETDATA_PATH' not defined"
- exit 1
-fi
-
-echo "Running changelog generation mechanism since ${LATEST_RELEASE_VERSION}"
-
-echo "Entering ${UNPACKAGED_NETDATA_PATH}"
-cd "${UNPACKAGED_NETDATA_PATH}"
-
-echo "Linking debian -> contrib/debian"
-ln -sf contrib/debian debian
-
-echo "Executing dpkg-buildpackage"
-# pre/post options are after 1.18.8, is simpler to just check help for their existence than parsing version
-if dpkg-buildpackage --help | grep "\-\-post\-clean" 2> /dev/null > /dev/null; then
- dpkg-buildpackage --post-clean --pre-clean --build=binary -us -uc
-else
- dpkg-buildpackage -b -us -uc
-fi
-
-echo "DEB build script completed!"
diff --git a/.travis/package_management/build_judy.sh b/.travis/package_management/build_judy.sh
deleted file mode 100755
index 202ea04490..0000000000
--- a/.travis/package_management/build_judy.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# Build Judy from source, you need to run this script as root.
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis (paul@netdata.cloud)
-set -e
-JUDY_VER="1.0.5"
-JUDY_DIR="/opt/judy-${JUDY_VER}"
-
-# If we are not in netdata git repo, at the top level directory, fail
-TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
-CWD=$(git rev-parse --show-cdup)
-if [ -n "$CWD" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
- echo "Run as .travis/package_management/$(basename "$0") from top level directory of netdata git repository"
- echo "Build Judy package from source code failed"
- exit 1
-fi
-
-echo "Fetching judy source tarball"
-wget -O /opt/judy.tar.gz http://downloads.sourceforge.net/project/judy/judy/Judy-${JUDY_VER}/Judy-${JUDY_VER}.tar.gz
-
-echo "Entering /opt directory and extracting tarball"
-cd /opt && tar -xf judy.tar.gz && rm judy.tar.gz
-
-echo "Entering ${JUDY_DIR}"
-cd "${JUDY_DIR}"
-
-echo "Running configure"
-CFLAGS="-O2 -s" CXXFLAGS="-O2 -s" ./configure
-
-echo "Compiling and installing"
-make && make install
-
-echo "Done, enjoy Judy!"
diff --git a/.travis/package_management/build_libuv.sh b/.travis/package_management/build_libuv.sh
deleted file mode 100755
index c30eede647..0000000000
--- a/.travis/package_management/build_libuv.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# Build libuv from source, you need to run this script as root.
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis <paul@netdata.cloud>
-set -e
-LIBUV_VERSION="v1.32.0"
-# Their folder is libuv-1.32.0 while the tarball version is v1.32.0, so fix that until they fix it...
-LIBUV_DIR="/opt/libuv-${LIBUV_VERSION/v/}"
-
-# If we are not in netdata git repo, at the top level directory, fail
-TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
-CWD=$(git rev-parse --show-cdup)
-if [ -n "$CWD" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
- echo "Run as .travis/package_management/$(basename "$0") from top level directory of netdata git repository"
- echo "Build libuv package from source code failed"
- exit 1
-fi
-
-echo "Fetching libuv from github"
-wget -O /opt/libuv.tar.gz "https://github.com/libuv/libuv/archive/${LIBUV_VERSION}.tar.gz"
-
-echo "Entering /opt and extracting source"
-cd /opt && tar -xf libuv.tar.gz && rm libuv.tar.gz
-
-echo "Entering ${LIBUV_DIR}"
-cd "${LIBUV_DIR}"
-
-echo "Compiling and installing"
-sh autogen.sh
-./configure
-make && make check && make install
-
-echo "Done, enjoy libuv!"
diff --git a/.travis/package_management/build_package_in_container.sh b/.travis/package_management/build_package_in_container.sh
deleted file mode 100755
index 95a68e7a83..0000000000
--- a/.travis/package_management/build_package_in_container.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env bash
-#
-# Entry point for package build process
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis (paul@netdata.cloud)
-#shellcheck disable=SC1091
-set -e
-
-# If we are not in netdata git repo, at the top level directory, fail
-TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
-CWD=$(git rev-parse --show-cdup)
-if [ -n "$CWD" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
- echo "Run as .travis/package_management/$(basename "$0") from top level directory of netdata git repository"
- echo "Docker build process aborted"
- exit 1
-fi
-
-source .travis/package_management/functions.sh || (echo "Failed to load packaging library" && exit 1)
-
-# Check for presence of mandatory environment variables
-if [ -z "${BUILD_STRING}" ]; then
- echo "No Distribution was defined. Make sure BUILD_STRING is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILDER_NAME}" ]; then
- echo "No builder account and container name defined. Make sure BUILDER_NAME is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILD_DISTRO}" ]; then
- echo "No build distro information defined. Make sure BUILD_DISTRO is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILD_RELEASE}" ]; then
- echo "No build release information defined. Make sure BUILD_RELEASE is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${PACKAGE_TYPE}" ]; then
- echo "No build release information defined. Make sure PACKAGE_TYPE is set on the environment before running this script"
- exit 1
-fi
-
-# Detect architecture and load extra variables needed
-detect_arch_from_commit
-
-case "${BUILD_ARCH}" in
-"all")
- echo "* * * Building all architectures, amd64 and i386 * * *"
- echo "Building for amd64.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-amd64"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- .travis/package_management/trigger_${PACKAGE_TYPE}_lxc_build.py "${CONTAINER_NAME}"
-
- echo "Building for arm64.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-arm64"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- .travis/package_management/trigger_${PACKAGE_TYPE}_lxc_build.py "${CONTAINER_NAME}"
-
- echo "Building for i386.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-i386"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- .travis/package_management/trigger_${PACKAGE_TYPE}_lxc_build.py "${CONTAINER_NAME}"
-
- ;;
-"amd64"|"arm64"|"i386")
- echo "Building for ${BUILD_ARCH}.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-${BUILD_ARCH}"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- .travis/package_management/trigger_${PACKAGE_TYPE}_lxc_build.py "${CONTAINER_NAME}"
- ;;
-*)
- echo "Unknown build architecture '${BUILD_ARCH}', nothing to do for build"
- exit 1
- ;;
-esac
-
-echo "Build process completed!"
diff --git a/.travis/package_management/common.py b/.travis/package_management/common.py
deleted file mode 100755
index 4cc04b93f3..0000000000
--- a/.travis/package_management/common.py
+++ /dev/null
@@ -1,182 +0,0 @@
-#
-#
-# Python library with commonly used functions within the package management scope
-#
-# Author : Pavlos Emm. Katsoulakis <paul@netdata.cloud>
-
-import lxc
-import subprocess
-import os
-import sys
-import tempfile
-import shutil
-
-def fetch_version(orig_build_version):
- tag = None
- friendly_version = ""
-
- # TODO: Checksum validations
- if str(orig_build_version).count(".latest") == 1:
- version_list=str(orig_build_version).replace('v', '').split('.')
- minor = version_list[3] if int(version_list[2]) == 0 else (version_list[2] + version_list[3])
- friendly_version='.'.join(version_list[0:2]) + "." + minor
- else:
- friendly_version = orig_build_version.replace('v', '')
- tag = friendly_version # Go to stable tag
- print("Version set to %s from %s" % (friendly_version, orig_build_version))
-
- return friendly_version, tag
-
-def replace_tag(tag_name, spec, new_tag_content):
- print("Fixing tag %s in %s" % (tag_name, spec))
-
- ifp = open(spec, "r")
- config = ifp.readlines()
- ifp.close()
-
- source_line = -1
- for line in config:
- if str(line).count(tag_name + ":") > 0:
- source_line = config.index(line)
- print("Found line: %s in item %d" % (line, source_line))
- break
-
- if source_line >= 0:
- print("Replacing line %s with %s in spec file" %(config[source_line], new_tag_content))
- config[source_line] = "%s: %s\n" % (tag_name, new_tag_content)
- config_str = ''.join(config)
- ofp = open(spec, 'w')
- ofp.write(config_str)
- ofp.close()
-
-def run_command(container, command):
- print("Running command: %s" % command)
- command_result = container.attach_wait(lxc.attach_run_command, command, stdout=sys.stdout.buffer, stderr=sys.stdout.buffer)
-
- if command_result != 0:
- raise Exception("Command failed with exit code %d" % command_result)
-
-def run_command_in_host(cmd, cwd=None):
- print("Issue command in host: %s, cwd:%s" % (str(cmd), str(cwd)))
-
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd)
- o, e = proc.communicate()
- print('Output: ' + o.decode('ascii'))
- print('Error: ' + e.decode('ascii'))
- print('code: ' + str(proc.returncode))
-
-def prepare_repo(container):
- if str(os.environ["REPO_TOOL"]).count("zypper") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "clean", "-a"])
- run_command(container, [os.environ["REPO_TOOL"], "--no-gpg-checks", "update", "-y"])
-
- elif str(os.environ["REPO_TOOL"]).count("yum") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "clean", "all"])
- run_command(container, [os.environ["REPO_TOOL"], "update", "-y"])
-
- if os.environ["BUILD_STRING"].count("el/7") == 1 and os.environ["BUILD_ARCH"].count("i386") == 1:
- print ("Skipping epel-release install for %s-%s" % (os.environ["BUILD_STRING"], os.environ["BUILD_ARCH"]))
- else:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "epel-release"])
-
- elif str(os.environ["REPO_TOOL"]).count("apt-get") == 1:
- if str(os.environ["BUILD_STRING"]).count("debian/jessie") == 1:
- run_command(container, ["bash", "-c", "echo deb http://archive.debian.org/debian/ jessie-backports main contrib non-free >> /etc/apt/sources.list.d/99-archived.list"])
- run_command(container, [os.environ["REPO_TOOL"], "update", "-y", '-o', 'Acquire::Check-Valid-Until=false'])
- else:
- run_command(container, [os.environ["REPO_TOOL"], "update", "-y"])
- else:
- run_command(container, [os.environ["REPO_TOOL"], "update", "-y"])
-
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "sudo"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "wget"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "bash"])
-
-def install_common_dependendencies(container):
- if str(os.environ["REPO_TOOL"]).count("zypper") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "gcc-c++"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "json-glib-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "freeipmi-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "cups-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "snappy-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-c"])
-
- elif str(os.environ["REPO_TOOL"]).count("yum") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "gcc-c++"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "json-c-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "freeipmi-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "cups-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "snappy-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-c-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-compiler"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libwebsockets-devel"])
-
- elif str(os.environ["REPO_TOOL"]).count("apt-get") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "g++"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libipmimonitoring-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libjson-c-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libcups2-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libsnappy-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libprotobuf-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libprotoc-dev"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-compiler"])
- if os.environ["BUILD_STRING"].count("debian/jessie") == 1:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "snappy"])
- else:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "gcc-c++"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "cups-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "freeipmi-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "json-c-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "snappy-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-c-devel"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "protobuf-compiler"])
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libwebsockets-devel"])
-
- if os.environ["BUILD_STRING"].count("el/6") <= 0:
- run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "autogen"])
-
-def prepare_version_source(dest_archive, pkg_friendly_version, tag=None):
- print(".0 Preparing local implementation tarball for version %s" % pkg_friendly_version)
- tar_file = os.environ['LXC_CONTAINER_ROOT'] + dest_archive
-
- print(".0 Copy repo to prepare it for tarball generation")
- tmp_src = tempfile.mkdtemp(prefix='netdata-source-')
- run_command_in_host(['cp', '-r', '.', tmp_src])
-
- if tag is not None:
- print(".1 Checking out tag %s" % tag)
- run_command_in_host(['git', 'fetch', '--all'], tmp_src)
-
- # TODO: Keep in mind that tricky 'v' there, needs to be removed once we clear our versioning scheme
- run_command_in_host(['git', 'checkout', 'v%s' % pkg_friendly_version], tmp_src)
-
- print(".2 Tagging the code with version: %s" % pkg_friendly_version)
- run_command_in_host(['git', 'tag', '-a', pkg_friendly_version, '-m', 'Tagging while packaging on %s' % os.environ["CONTAINER_NAME"]], tmp_src)
-
- print(".3 Run autoreconf -ivf")
- run_command_in_host(['autoreconf', '-ivf'], tmp_src)
-
- print(".4 Run configure")
- run_command_in_host(['./configure', '--prefix=/usr', '--sysconfdir=/etc', '--localstatedir=/var', '--libdir=/usr/lib', '--libexecdir=/usr/libexec', '--with-math', '--with-zlib', '--with-user=netdata'], tmp_src)
-
- print(".5 Run make dist")
- run_command_in_host(['make', 'dist'], tmp_src)
-
- print(".6 Copy generated tarbal to desired path")
- generated_tarball = '%s/netdata-%s.tar.gz' % (tmp_src, pkg_friendly_version)
-
- if os.path.exists(generated_tarball):
- run_command_in_host(['sudo', 'cp', generated_tarball, tar_file])
-
- print(".7 Fixing permissions on tarball")
- run_command_in_host(['sudo', 'chmod', '777', tar_file])
-
- print(".8 Bring over netdata.spec, Remove temp directory");
- run_command_in_host(['cp', '%s/netdata.spec' % tmp_src, 'netdata.spec'])
- shutil.rmtree(tmp_src)
- else:
- print("I could not find (%s) on the disk, stopping the build. Kindly check the logs and try again" % generated_tarball)
- sys.exit(1)
diff --git a/.travis/package_management/configure_deb_lxc_environment.py b/.travis/package_management/configure_deb_lxc_environment.py
deleted file mode 100755
index 627493bf54..0000000000
--- a/.travis/package_management/configure_deb_lxc_environment.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env python3
-#
-# Prepare the build environment within the container
-# The script attaches to the running container and does the following:
-# 1) Create the container
-# 2) Start the container up
-# 3) Create the builder user
-# 4) Prepare the environment for DEB build
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis <paul@netdata.cloud>
-
-import common
-import os
-import sys
-import lxc
-
-if len(sys.argv) != 2:
- print('You need to provide a container name to get things started')
- sys.exit(1)
-container_name=sys.argv[1]
-
-# Setup the container object
-print("Defining container %s" % container_name)
-container = lxc.Container(container_name)
-if not container.defined:
- raise Exception("Container %s not defined!" % container_name)
-
-# Start the container
-if not container.start():
- raise Exception("Failed to start the container")
-
-if not container.running or not container.state == "RUNNING":
- raise Exception('Container %s is not running, configuration process aborted ' % container_name)
-
-# Wait for connectivity
-print("Waiting for container connectivity to start configuration sequence")
-if not container.get_ips(timeout=30):
- raise Exception("Timeout while waiting for container")
-
-build_path = "/home/%s" % os.environ['BUILDER_NAME']
-
-# Run the required activities now
-# 1. Create the builder user
-print("1. Adding user %s" % os.environ['BUILDER_NAME'])
-common.run_command(container, ["useradd", "-m", os.environ['BUILDER_NAME']])
-
-# Fetch package dependencies for the build
-print("2. Preparing repo on LXC container")
-common.prepare_repo(container)
-
-print("2.1 Install .DEB build support packages")
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "dpkg-dev"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libdistro-info-perl"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "dh-make"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "dh-systemd"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "dh-autoreconf"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "git-buildpackage"])
-
-print("2.2 Add more dependencies")
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libnetfilter-acct-dev"])
-common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libcups2-dev"])
-
-print ("3.1 Run install-required-packages scriptlet")
-common.run_command(container, ["wget", "-T", "15", "-O", "%s/.install-required-packages.sh" % build_path, "https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh"])
-common.run_command(container, ["bash", "%s/.install-required-packages.sh" % build_path, "netdata", "--dont-wait", "--non-interactive"])
-
-print("3.2 Installing package dependencies within LXC container")
-common.install_common_dependendencies(container)
-
-friendly_version=""
-dest_archive=""
-download_url=""
-tag = None
-friendly_version, tag = common.fetch_version(os.environ['BUILD_VERSION'])
-
-tar_file="%s/netdata-%s.tar.gz" % (os.path.dirname(dest_archive), friendly_version)
-
-print("5. I will be building version '%s' of netdata." % os.environ['BUILD_VERSION'])
-dest_archive="%s/netdata-%s.tar.gz" % (build_path, friendly_version)
-
-common.prepare_version_source(dest_archive, friendly_version, tag=tag)
-
-print("6. Installing build.sh script to build path")
-common.run_command_in_host(['sudo', 'cp', '.travis/package_management/build.sh', "%s/%s/build.sh" % (os.environ['LXC_CONTAINER_ROOT'], build_path)])
-common.run_command_in_host(['sudo', 'chmod', '777', "%s/%s/build.sh" % (os.environ['LXC_CONTAINER_ROOT'], build_path)])
-common.run_command_in_host(['sudo', 'ln', '-sf', 'contrib/debian', 'debian'])
-
-print("Done!")
diff --git a/.travis/package_management/configure_rpm_lxc_environment.py b/.travis/package_management/configure_rpm_lxc_environment.py
deleted file mode 100755
index 4dca0bf384..0000000000
--- a/.travis/package_management/configure_rpm_lxc_environment.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env python3
-#
-#
-# Prepare the build environment within the container
-# The script attaches to the running container and does the following:
-# 1) Create the container
-# 2) Start the container up
-# 3) Create the builder user
-# 4) Prepare the environment for RPM build
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis <paul@netdata.cloud>
-
-import common
-import os
-import sys
-import lxc
-
-if len(sys.argv) != 2:
- print('You need to provide a container name to get things started')
- sys.exit(1)
-container_name=sys.argv[1]
-
-# Setup the container object
-print("Defining container %s" % container_name)
-container = lxc.Container(container_name)
-if not container.defined:
- raise Exception("Container %s not defined!" % container_name)
-
-# Start the container
-if not container.start():
- raise Exception("Failed to start the container")
-
-if not container.running or not container.state == "RUNNING":
- raise Exception('Container %s is not running, configuration process aborted ' % container_name)
-
-# Wait for connectivity
-print("Waiting for container connectivity to start configuration sequence")
-if not container.get_ips(timeout=30):
- raise Exception("Timeout while waiting for container")
-
-# Run the required activities now
-# Create the builder user
-print("1. Adding user %s" % os.environ['BUILDER_NAME'])
-common.run_command(container, ["useradd", "-m", os.environ['BUILDER_NAME']])
-
-# Fetch package dependencies for the build
-print("2.1 Preparing repo on LXC container")
-common.prepare_repo(container)
-
-common.run_command(container, ["wget", "-T", "15", "-O", "/home/%s/.install-required-packages.sh" % (os.environ['BUILDER_NAME']), "https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh"])
-common.run_command(container, ["bash", "/home/%s/.install-required-packages.sh" % (os.environ['BUILDER_NAME']), "netdata", "--dont-wait", "--non-interactive"])
-
-# Exceptional cases, not available everywhere
-#
-print("2.2 Running uncommon dependencies and preparing LXC environment")
-# Not on Centos-7
-if os.environ["BUILD_STRING"].count("el/7") <= 0:
- common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "libnetfilter_acct-devel"])
-
-# Not on Centos-6
-if os.environ["BUILD_STRING"].count("el/6") <= 0:
- common.run_command(container, [os.environ["REPO_TOOL"], "install", "-y", "autoconf-archive"])
-
-print("2.3 Installing common dependencies")
-common.install_common_dependendencies(container)
-
-print("3. Setting up macros")
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "/bin/echo", "'%_topdir %(echo /home/" + os.environ['BUILDER_NAME'] + ")/rpmbuild' > /home/" + os.environ['BUILDER_NAME'] + "/.rpmmacros"])
-
-print("4. Create rpmbuild directory")
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "mkdir", "-p", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild/BUILD"])
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "mkdir", "-p", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild/RPMS"])
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "mkdir", "-p", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild/SOURCES"])
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "mkdir", "-p", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild/SPECS"])
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "mkdir", "-p", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild/SRPMS"])
-common.run_command(container, ["sudo", "-u", os.environ['BUILDER_NAME'], "ls", "-ltrR", "/home/" + os.environ['BUILDER_NAME'] + "/rpmbuild"])
-
-# Download the source
-rpm_friendly_version=""
-dest_archive=""
-download_url=""
-spec_file="/home/%s/rpmbuild/SPECS/netdata.spec" % os.environ['BUILDER_NAME']
-tag = None
-rpm_friendly_version, tag = common.fetch_version(os.environ['BUILD_VERSION'])
-tar_file="%s/netdata-%s.tar.gz" % (os.path.dirname(dest_archive), rpm_friendly_version)
-
-print("5. I will be building version '%s' of netdata." % os.environ['BUILD_VERSION'])
-dest_archive="/home/%s/rpmbuild/SOURCES/netdata-%s.tar.gz" % (os.environ['BUILDER_NAME'], rpm_friendly_version)
-
-common.prepare_version_source(dest_archive, rpm_friendly_version, tag=tag)
-
-# Extract the spec file in place
-print("6. Extract spec file from the source")
-common.run_command_in_host(['sudo', 'cp', 'netdata.spec', os.environ['LXC_CONTAINER_ROOT'] + spec_file])
-common.run_command_in_host(['sudo', 'chmod', '777', os.environ['LXC_CONTAINER_ROOT'] + spec_file])
-
-print("7. Temporary hack: Change Source0 to %s on spec file %s" % (dest_archive, spec_file))
-common.replace_tag("Source0", os.environ['LXC_CONTAINER_ROOT'] + spec_file, tar_file)
-
-print('Done!')
diff --git a/.travis/package_management/create_lxc_for_build.sh b/.travis/package_management/create_lxc_for_build.sh
deleted file mode 100755
index d733687a8b..0000000000
--- a/.travis/package_management/create_lxc_for_build.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env bash
-#
-# This script generates an LXC container and starts it up
-# Once the script completes successfully, a container has become available for usage
-# The container image to be used and the container name to be set, are part of variables
-# that must be present for the script to work
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis (paul@netdata.cloud)
-# shellcheck disable=SC1091
-set -e
-
-source .travis/package_management/functions.sh || (echo "Failed to load packaging library" && exit 1)
-
-# If we are not in netdata git repo, at the top level directory, fail
-TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
-CWD=$(git rev-parse --show-cdup)
-if [ -n "$CWD" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
- echo "Run as .travis/package_management/$(basename "$0") from top level directory of netdata git repository"
- echo "LXC Container creation aborted"
- exit 1
-fi
-
-# Check for presence of mandatory environment variables
-if [ -z "${BUILD_STRING}" ]; then
- echo "No Distribution was defined. Make sure BUILD_STRING is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILDER_NAME}" ]; then
- echo "No builder account and container name defined. Make sure BUILDER_NAME is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILD_DISTRO}" ]; then
- echo "No build distro information defined. Make sure BUILD_DISTRO is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${BUILD_RELEASE}" ]; then
- echo "No build release information defined. Make sure BUILD_RELEASE is set on the environment before running this script"
- exit 1
-fi
-
-if [ -z "${PACKAGE_TYPE}" ]; then
- echo "No build release information defined. Make sure PACKAGE_TYPE is set on the environment before running this script"
- exit 1
-fi
-
-# Detect architecture and load extra variables needed
-detect_arch_from_commit
-
-echo "Creating LXC container ${BUILDER_NAME}/${BUILD_STRING}/${BUILD_ARCH}...."
-
-case "${BUILD_ARCH}" in
-"all")
- # i386
- echo "Creating LXC Container for i386.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-i386"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- lxc-create -n "${CONTAINER_NAME}" -t "download" -- --dist "${BUILD_DISTRO}" --release "${BUILD_RELEASE}" --arch "i386" --no-validate
-
- echo "Container(s) ready. Configuring container(s).."
- .travis/package_management/configure_${PACKAGE_TYPE}_lxc_environment.py "${CONTAINER_NAME}"
-
- # amd64
- echo "Creating LXC Container for amd64.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-amd64"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- lxc-create -n "${CONTAINER_NAME}" -t "download" -- --dist "${BUILD_DISTRO}" --release "${BUILD_RELEASE}" --arch "amd64" --no-validate
-
- echo "Container(s) ready. Configuring container(s).."
- .travis/package_management/configure_${PACKAGE_TYPE}_lxc_environment.py "${CONTAINER_NAME}"
-
- # arm64
- echo "Creating LXC Container for arm64.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-arm64"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- lxc-create -n "${CONTAINER_NAME}" -t "download" -- --dist "${BUILD_DISTRO}" --release "${BUILD_RELEASE}" --arch "arm64" --no-validate
-
- echo "Container(s) ready. Configuring container(s).."
- .travis/package_management/configure_${PACKAGE_TYPE}_lxc_environment.py "${CONTAINER_NAME}"
- ;;
-"i386"|"amd64"|"arm64")
- # amd64 or i386
- echo "Creating LXC Container for ${BUILD_ARCH}.."
- export CONTAINER_NAME="${BUILDER_NAME}-${BUILD_DISTRO}${BUILD_RELEASE}-${BUILD_ARCH}"
- export LXC_CONTAINER_ROOT="/var/lib/lxc/${CONTAINER_NAME}/rootfs"
- lxc-create -n "${CONTAINER_NAME}" -t "download" -- --dist "${BUILD_DISTRO}" --release "${BUILD_RELEASE}" --arch "${BUILD_ARCH}" --no-validate
-
- echo "Container(s) ready. Configuring container(s).."
- .travis/package_management/configure_${PACKAGE_TYPE}_lxc_environment.py "${CONTAINER_NAME}"
- ;;
-*)
- echo "Unknown BUILD_ARCH value '${BUILD_ARCH}' given, process failed"
- exit 1
- ;;
-esac
-
-echo "..LXC creation complete!"
diff --git a/.travis/package_management/functions.sh b/.travis/package_management/functions.sh
deleted file mode 100644
index 0c00d2fcb2..0000000000
--- a/.travis/package_management/functions.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-# no-shebang-needed-its-a-library
-#
-# Utility functions for packaging in travis CI
-#
-# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Author : Pavlos Emm. Katsoulakis (paul@netdata.cloud)
-#shellcheck disable=SC2148
-set -e
-
-function detect_arch_from_commit {
- case "${TRAVIS_COMMIT_MESSAGE}" in
- "[Package amd64"*)
- export BUILD_ARCH="amd64"
- ;;</