build: add LXD/docker automatic testing

Signed-off-by: nachoparker <nacho@ownyourbits.com>
This commit is contained in:
nachoparker 2021-10-06 11:44:32 -06:00
parent fde2f73cfc
commit 9e276600e6
3 changed files with 84 additions and 41 deletions

View File

@ -20,11 +20,50 @@ source build/buildlib.sh # initializes $IMGNAME
echo -e "\e[1mNOTE: CLEAN is enabled\nYou can ^C to cancel now\e[0m"
}
[[ "$SKIP_TESTS" == "1" ]] && {
echo -e "\e[1mNOTE: SKIP_TESTS is enabled\nYou can ^C to cancel now\e[0m"
}
sleep 5
# make sure we don't accidentally include this
rm -f ncp-web/wizard.cfg
# LXD
build/build-LXD.sh
# Docker x86
build/build-docker.sh x86
# Tests
[[ "${SKIP_TESTS}" != 1 ]] && {
## LXC testing
lxc stop ncp || true
lxc start ncp
lxc exec ncp -- bash -c 'while [ "$(systemctl is-system-running 2>/dev/null)" != "running" ] && [ "$(systemctl is-system-running 2>/dev/null)" != "degraded" ]; do :; done'
ip="$(lxc exec ncp -- bash -c 'source /usr/local/etc/library.sh && get_ip')"
tests/activation_tests.py "${ip}"
tests/nextcloud_tests.py "${ip}"
tests/system_tests.py
lxc stop ncp
## Docker testing
cd build/docker
docker compose down
docker volume rm docker_ncdata
docker compose up -d
sleep 30
../../tests/activation_tests.py
../../tests/nextcloud_tests.py
../../tests/system_tests.py
docker compose down
cd -
}
# Docker other
build/build-docker.sh armhf
build/build-docker.sh arm64
# Raspbian
build/build-SD-rpi.sh
IMG="$( ls -1t tmp/*.img | head -1 )"
@ -43,51 +82,36 @@ build/build-SD-armbian.sh odroidc2 OdroidC2
# VM
build/build-VM.sh
# LXD
build/build-LXD.sh
# Docker
build/build-docker.sh x86
build/build-docker.sh armhf
build/build-docker.sh arm64
[[ "$FTPPASS" == "" ]] && exit
export DOCKER_CLI_EXPERIMENTAL=enabled
# TODO test first
#&& {
docker push ownyourbits/nextcloudpi-x86:latest
docker push ownyourbits/nextcloudpi-x86:${version}
docker push ownyourbits/nextcloud-x86:latest
docker push ownyourbits/nextcloud-x86:${version}
docker push ownyourbits/lamp-x86:latest
docker push ownyourbits/lamp-x86:${version}
docker push ownyourbits/debian-ncp-x86:latest
docker push ownyourbits/debian-ncp-x86:${version}
#}
docker push ownyourbits/nextcloudpi-x86:latest
docker push ownyourbits/nextcloudpi-x86:${version}
docker push ownyourbits/nextcloud-x86:latest
docker push ownyourbits/nextcloud-x86:${version}
docker push ownyourbits/lamp-x86:latest
docker push ownyourbits/lamp-x86:${version}
docker push ownyourbits/debian-ncp-x86:latest
docker push ownyourbits/debian-ncp-x86:${version}
# TODO test first && {
docker push ownyourbits/nextcloudpi-armhf:latest
docker push ownyourbits/nextcloudpi-armhf:${version}
docker push ownyourbits/nextcloud-armhf:latest
docker push ownyourbits/nextcloud-armhf:${version}
docker push ownyourbits/lamp-armhf:latest
docker push ownyourbits/lamp-armhf:${version}
docker push ownyourbits/debian-ncp-armhf:latest
docker push ownyourbits/debian-ncp-armhf:${version}
#}
docker push ownyourbits/nextcloudpi-armhf:latest
docker push ownyourbits/nextcloudpi-armhf:${version}
docker push ownyourbits/nextcloud-armhf:latest
docker push ownyourbits/nextcloud-armhf:${version}
docker push ownyourbits/lamp-armhf:latest
docker push ownyourbits/lamp-armhf:${version}
docker push ownyourbits/debian-ncp-armhf:latest
docker push ownyourbits/debian-ncp-armhf:${version}
# TODO test first && {
docker push ownyourbits/nextcloudpi-arm64:latest
docker push ownyourbits/nextcloudpi-arm64:${version}
docker push ownyourbits/nextcloud-arm64:latest
docker push ownyourbits/nextcloud-arm64:${version}
docker push ownyourbits/lamp-arm64:latest
docker push ownyourbits/lamp-arm64:${version}
docker push ownyourbits/debian-ncp-arm64:latest
docker push ownyourbits/debian-ncp-arm64:${version}
#}
docker push ownyourbits/nextcloudpi-arm64:latest
docker push ownyourbits/nextcloudpi-arm64:${version}
docker push ownyourbits/nextcloud-arm64:latest
docker push ownyourbits/nextcloud-arm64:${version}
docker push ownyourbits/lamp-arm64:latest
docker push ownyourbits/lamp-arm64:${version}
docker push ownyourbits/debian-ncp-arm64:latest
docker push ownyourbits/debian-ncp-arm64:${version}
# Docker multi-arch
docker manifest create --amend ownyourbits/nextcloudpi:${version} \

View File

@ -112,6 +112,9 @@ function set-nc-domain()
{
local domain="${1?}"
domain="$(sed 's|http.\?://||;s|\(/.*\)||' <<<"${domain}")"
if ! ping -c1 -w1 -q "${domain}" &>/dev/null; then
unset domain
fi
if [[ "${domain}" == "" ]] || is_an_ip "${domain}"; then
echo "warning: No domain found. Defaulting to '$(hostname)'"
domain="$(hostname)"

View File

@ -19,7 +19,7 @@ import getopt
import os
import signal
from urllib.request import urlopen
from subprocess import run, PIPE
from subprocess import run, getstatusoutput, PIPE
processes_must_be_running = [
'apache2',
@ -167,6 +167,10 @@ def check_notify_push():
print(result.stdout)
return False
def is_lxc():
"check that we are running inside a LXC container"
(exitcode, output) = getstatusoutput('grep -q container=lxc /proc/1/environ')
return exitcode == 0
def signal_handler(sig, frame):
sys.exit(0)
@ -206,10 +210,17 @@ if __name__ == "__main__":
except:
dockers_running = ''
# detect if we are running this in a LXC instance
try:
lxc_running = run(['lxc', 'info', 'ncp'], stdout=PIPE, check = True)
except:
lxc_running = False
# local method
if os.path.exists('/usr/local/etc/ncp-baseimage'):
print(tc.brown + "* local NCP instance detected" + tc.normal)
binaries_must_be_installed = binaries_must_be_installed + binaries_no_docker
if not is_lxc():
binaries_must_be_installed = binaries_must_be_installed + binaries_no_docker
pre_cmd = []
# docker method
@ -217,6 +228,11 @@ if __name__ == "__main__":
print( tc.brown + "* local NCP docker instance detected" + tc.normal)
pre_cmd = ['docker', 'exec', '-ti', 'nextcloudpi']
# LXC method
elif lxc_running:
print( tc.brown + "* local LXC instance detected" + tc.normal)
pre_cmd = ['lxc', 'exec', 'ncp', '--']
# SSH method
else:
if len(args) == 0: