0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-13 09:11:50 +00:00

Add basic runtime checks to static build process. ()

* Enable use of Podman for static builds.

This way those of us who have migrated away from Docker can still easily
test static builds.

* Add basic runtime testing to the static build process.

This will help catch basic runtime issues that would not show up just
from building the agent.
This commit is contained in:
Austin S. Hemmelgarn 2022-07-14 14:26:11 +03:00 committed by GitHub
parent 1cea4f77ee
commit bd5f778838
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 78 additions and 9 deletions

View file

@ -15,30 +15,44 @@ if [ -z "${platform}" ]; then
exit 1
fi
if command -v docker > /dev/null 2>&1; then
docker="docker"
elif command -v podman > /dev/null 2>&1; then
docker="podman"
else
echo "Could not find a usable OCI runtime, need either Docker or Podman."
exit 1
fi
DOCKER_IMAGE_NAME="netdata/static-builder"
if [ "${BUILDARCH}" != "$(uname -m)" ] && [ "$(uname -m)" = 'x86_64' ] && [ -z "${SKIP_EMULATION}" ]; then
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes || exit 1
${docker} run --rm --privileged multiarch/qemu-user-static --reset -p yes || exit 1
fi
if docker inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
img_platform="$(docker image inspect netdata/static-builder --format '{{.Os}}/{{.Architecture}}/{{.Variant}}')"
if [ "${img_platform%'/'}" != "${platform}" ]; then
docker image rm "${DOCKER_IMAGE_NAME}" || exit 1
if ${docker} inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
if ${docker} image inspect "${DOCKER_IMAGE_NAME}" | grep -q 'Variant'; then
img_platform="$(${docker} image inspect "${DOCKER_IMAGE_NAME}" --format '{{.Os}}/{{.Architecture}}/{{.Variant}}')"
else
img_platform="$(${docker} image inspect "${DOCKER_IMAGE_NAME}" --format '{{.Os}}/{{.Architecture}}')"
fi
if [ "${img_platform}" != "${platform}" ]; then
${docker} image rm "${DOCKER_IMAGE_NAME}" || exit 1
fi
fi
if ! docker inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
docker pull --platform "${platform}" "${DOCKER_IMAGE_NAME}"
if ! ${docker} inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
${docker} pull --platform "${platform}" "${DOCKER_IMAGE_NAME}"
fi
# Run the build script inside the container
if [ -t 1 ]; then
run docker run --rm -e BUILDARCH="${BUILDARCH}" -a stdin -a stdout -a stderr -i -t -v "$(pwd)":/netdata:rw \
run ${docker} run --rm -e BUILDARCH="${BUILDARCH}" -a stdin -a stdout -a stderr -i -t -v "$(pwd)":/netdata:rw \
"${DOCKER_IMAGE_NAME}" \
/bin/sh /netdata/packaging/makeself/build.sh "${@}"
else
run docker run --rm -e BUILDARCH="${BUILDARCH}" -v "$(pwd)":/netdata:rw \
run ${docker} run --rm -e BUILDARCH="${BUILDARCH}" -v "$(pwd)":/netdata:rw \
-e GITHUB_ACTIONS="${GITHUB_ACTIONS}" "${DOCKER_IMAGE_NAME}" \
/bin/sh /netdata/packaging/makeself/build.sh "${@}"
fi

View file

@ -24,6 +24,7 @@ apk add --no-cache -U \
git \
gnutls-dev \
gzip \
jq \
libelf-static \
libmnl-dev \
libnetfilter_acct-dev \

View file

@ -0,0 +1,54 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck source=./packaging/makeself/functions.sh
. "${NETDATA_MAKESELF_PATH}"/functions.sh "${@}" || exit 1
dump_log() {
cat ./netdata.log
}
wait_for() {
host="${1}"
port="${2}"
name="${3}"
timeout="30"
if command -v nc > /dev/null ; then
netcat="nc"
elif command -v netcat > /dev/null ; then
netcat="netcat"
else
printf "Unable to find a usable netcat command.\n"
return 1
fi
printf "Waiting for %s on %s:%s ... " "${name}" "${host}" "${port}"
sleep 30
i=0
while ! ${netcat} -z "${host}" "${port}"; do
sleep 1
if [ "$i" -gt "$timeout" ]; then
printf "Timed out!\n"
return 1
fi
i="$((i + 1))"
done
printf "OK\n"
}
trap dump_log EXIT
"${NETDATA_INSTALL_PATH}/bin/netdata" -D > ./netdata.log 2>&1 &
wait_for localhost 19999 netdata || exit 1
curl -sS http://127.0.0.1:19999/api/v1/info > ./response || exit 1
cat ./response
jq '.version' ./response || exit 1
trap - EXIT