summaryrefslogtreecommitdiffstats
path: root/build_external/bin
diff options
context:
space:
mode:
authorAndrew Moss <1043609+amoss@users.noreply.github.com>2020-02-21 15:06:31 +0100
committerGitHub <noreply@github.com>2020-02-21 15:06:31 +0100
commit81e39357aff382f90332567137b77bb293a2ce93 (patch)
treeccff2d06555679a865eba62e0616f35cf5abdd4f /build_external/bin
parent19ef3f93792d382992afbdce74743d868eaa3074 (diff)
Added support for cross-host docker-compose builds (#7754)
The new file in the build_external directory allow cross-host builds (i.e. building Netdata for a Debian system on a Fedora host). The build and execution is wrapped inside docker containers with an appropriate user-land, based on the package builder base images. These containers can be orchestrated into more complex testing environments (e.g. master-slave streaming setups or the ACLK). Rebuilding the netdata agent inside the containers is an incremental build-step (to improve dev time) rather than a clean install.
Diffstat (limited to 'build_external/bin')
-rwxr-xr-xbuild_external/bin/clean-install.sh49
-rwxr-xr-xbuild_external/bin/make-install.sh8
2 files changed, 57 insertions, 0 deletions
diff --git a/build_external/bin/clean-install.sh b/build_external/bin/clean-install.sh
new file mode 100755
index 0000000000..032cb09ca4
--- /dev/null
+++ b/build_external/bin/clean-install.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+
+DISTRO="$1"
+VERSION="$2"
+BuildBase="$(cd "$(dirname "$0")" && cd .. && pwd)"
+
+# This is temporary - not all of the package-builder images from the helper-images repo
+# are available on Docker Hub. When everything falls under the "happy case" below this
+# can be deleted in a future iteration. This is written in a weird way for portability,
+# can't rely on bash 4.0+ to allow case fall-through with ;&
+
+if cat <<HAPPY_CASE | grep "$DISTRO-$VERSION"
+ opensuse-15.1
+ fedora-29
+ debian-9
+ debian-8
+ fedora-30
+ opensuse-15.0
+ ubuntu-19.04
+ centos-7
+ fedora-31
+ ubuntu-16.04
+ ubuntu-18.04
+ ubuntu-19.10
+ debian-10
+ centos-8
+ ubuntu-1804
+ ubuntu-1904
+ ubuntu-1910
+ debian-stretch
+ debian-jessie
+ debian-buster
+HAPPY_CASE
+then
+ docker build -f "$BuildBase/clean-install.Dockerfile" -t "${DISTRO}_${VERSION}_dev" "$BuildBase/.." \
+ --build-arg "DISTRO=$DISTRO" --build-arg "VERSION=$VERSION" --build-arg ACLK=yes \
+ --build-arg EXTRA_CFLAGS="-DACLK_SSL_ALLOW_SELF_SIGNED"
+else
+ case "$DISTRO-$VERSION" in
+ arch-current)
+ docker build -f "$BuildBase/clean-install-arch.Dockerfile" -t "${DISTRO}_${VERSION}_dev" "$BuildBase/.." \
+ --build-arg "DISTRO=$DISTRO" --build-arg "VERSION=$VERSION" --build-arg ACLK=yes \
+ --build-arg EXTRA_CFLAGS="-DACLK_SSL_ALLOW_SELF_SIGNED"
+ ;;
+ *)
+ echo "Unknown $DISTRO-$VERSION"
+ ;;
+ esac
+fi
diff --git a/build_external/bin/make-install.sh b/build_external/bin/make-install.sh
new file mode 100755
index 0000000000..fe4f7c9e83
--- /dev/null
+++ b/build_external/bin/make-install.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+DISTRO="$1"
+VERSION="$2"
+BuildBase="$(cd "$(dirname "$0")" && cd .. && pwd)"
+
+docker build -f "$BuildBase/make-install.Dockerfile" -t "${DISTRO}_${VERSION}_dev:latest" "$BuildBase/.." \
+ --build-arg "DISTRO=${DISTRO}" --build-arg "VERSION=${VERSION}"