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. (#13339)
* 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:
parent
1cea4f77ee
commit
bd5f778838
3 changed files with 78 additions and 9 deletions
packaging/makeself
|
@ -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
|
||||
|
|
|
@ -24,6 +24,7 @@ apk add --no-cache -U \
|
|||
git \
|
||||
gnutls-dev \
|
||||
gzip \
|
||||
jq \
|
||||
libelf-static \
|
||||
libmnl-dev \
|
||||
libnetfilter_acct-dev \
|
||||
|
|
54
packaging/makeself/jobs/90-netdata-runtime-check.sh
Executable file
54
packaging/makeself/jobs/90-netdata-runtime-check.sh
Executable 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
|
Loading…
Add table
Reference in a new issue