Skip to content

Commit 9e27660

Browse files
committed
build: add LXD/docker automatic testing
Signed-off-by: nachoparker <nacho@ownyourbits.com>
1 parent fde2f73 commit 9e27660

3 files changed

Lines changed: 86 additions & 43 deletions

File tree

build/batch.sh

Lines changed: 65 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,50 @@ source build/buildlib.sh # initializes $IMGNAME
2020
echo -e "\e[1mNOTE: CLEAN is enabled\nYou can ^C to cancel now\e[0m"
2121
}
2222

23+
[[ "$SKIP_TESTS" == "1" ]] && {
24+
echo -e "\e[1mNOTE: SKIP_TESTS is enabled\nYou can ^C to cancel now\e[0m"
25+
}
26+
2327
sleep 5
2428

2529
# make sure we don't accidentally include this
2630
rm -f ncp-web/wizard.cfg
2731

32+
# LXD
33+
build/build-LXD.sh
34+
35+
# Docker x86
36+
build/build-docker.sh x86
37+
38+
# Tests
39+
[[ "${SKIP_TESTS}" != 1 ]] && {
40+
## LXC testing
41+
lxc stop ncp || true
42+
lxc start ncp
43+
lxc exec ncp -- bash -c 'while [ "$(systemctl is-system-running 2>/dev/null)" != "running" ] && [ "$(systemctl is-system-running 2>/dev/null)" != "degraded" ]; do :; done'
44+
ip="$(lxc exec ncp -- bash -c 'source /usr/local/etc/library.sh && get_ip')"
45+
tests/activation_tests.py "${ip}"
46+
tests/nextcloud_tests.py "${ip}"
47+
tests/system_tests.py
48+
lxc stop ncp
49+
50+
## Docker testing
51+
cd build/docker
52+
docker compose down
53+
docker volume rm docker_ncdata
54+
docker compose up -d
55+
sleep 30
56+
../../tests/activation_tests.py
57+
../../tests/nextcloud_tests.py
58+
../../tests/system_tests.py
59+
docker compose down
60+
cd -
61+
}
62+
63+
# Docker other
64+
build/build-docker.sh armhf
65+
build/build-docker.sh arm64
66+
2867
# Raspbian
2968
build/build-SD-rpi.sh
3069
IMG="$( ls -1t tmp/*.img | head -1 )"
@@ -43,51 +82,36 @@ build/build-SD-armbian.sh odroidc2 OdroidC2
4382
# VM
4483
build/build-VM.sh
4584

46-
# LXD
47-
build/build-LXD.sh
48-
49-
# Docker
50-
build/build-docker.sh x86
51-
build/build-docker.sh armhf
52-
build/build-docker.sh arm64
53-
5485
[[ "$FTPPASS" == "" ]] && exit
5586

5687
export DOCKER_CLI_EXPERIMENTAL=enabled
5788

58-
# TODO test first
59-
#&& {
60-
docker push ownyourbits/nextcloudpi-x86:latest
61-
docker push ownyourbits/nextcloudpi-x86:${version}
62-
docker push ownyourbits/nextcloud-x86:latest
63-
docker push ownyourbits/nextcloud-x86:${version}
64-
docker push ownyourbits/lamp-x86:latest
65-
docker push ownyourbits/lamp-x86:${version}
66-
docker push ownyourbits/debian-ncp-x86:latest
67-
docker push ownyourbits/debian-ncp-x86:${version}
68-
#}
69-
70-
# TODO test first && {
71-
docker push ownyourbits/nextcloudpi-armhf:latest
72-
docker push ownyourbits/nextcloudpi-armhf:${version}
73-
docker push ownyourbits/nextcloud-armhf:latest
74-
docker push ownyourbits/nextcloud-armhf:${version}
75-
docker push ownyourbits/lamp-armhf:latest
76-
docker push ownyourbits/lamp-armhf:${version}
77-
docker push ownyourbits/debian-ncp-armhf:latest
78-
docker push ownyourbits/debian-ncp-armhf:${version}
79-
#}
80-
81-
# TODO test first && {
82-
docker push ownyourbits/nextcloudpi-arm64:latest
83-
docker push ownyourbits/nextcloudpi-arm64:${version}
84-
docker push ownyourbits/nextcloud-arm64:latest
85-
docker push ownyourbits/nextcloud-arm64:${version}
86-
docker push ownyourbits/lamp-arm64:latest
87-
docker push ownyourbits/lamp-arm64:${version}
88-
docker push ownyourbits/debian-ncp-arm64:latest
89-
docker push ownyourbits/debian-ncp-arm64:${version}
90-
#}
89+
docker push ownyourbits/nextcloudpi-x86:latest
90+
docker push ownyourbits/nextcloudpi-x86:${version}
91+
docker push ownyourbits/nextcloud-x86:latest
92+
docker push ownyourbits/nextcloud-x86:${version}
93+
docker push ownyourbits/lamp-x86:latest
94+
docker push ownyourbits/lamp-x86:${version}
95+
docker push ownyourbits/debian-ncp-x86:latest
96+
docker push ownyourbits/debian-ncp-x86:${version}
97+
98+
docker push ownyourbits/nextcloudpi-armhf:latest
99+
docker push ownyourbits/nextcloudpi-armhf:${version}
100+
docker push ownyourbits/nextcloud-armhf:latest
101+
docker push ownyourbits/nextcloud-armhf:${version}
102+
docker push ownyourbits/lamp-armhf:latest
103+
docker push ownyourbits/lamp-armhf:${version}
104+
docker push ownyourbits/debian-ncp-armhf:latest
105+
docker push ownyourbits/debian-ncp-armhf:${version}
106+
107+
docker push ownyourbits/nextcloudpi-arm64:latest
108+
docker push ownyourbits/nextcloudpi-arm64:${version}
109+
docker push ownyourbits/nextcloud-arm64:latest
110+
docker push ownyourbits/nextcloud-arm64:${version}
111+
docker push ownyourbits/lamp-arm64:latest
112+
docker push ownyourbits/lamp-arm64:${version}
113+
docker push ownyourbits/debian-ncp-arm64:latest
114+
docker push ownyourbits/debian-ncp-arm64:${version}
91115

92116
# Docker multi-arch
93117
docker manifest create --amend ownyourbits/nextcloudpi:${version} \

etc/library.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ function set-nc-domain()
112112
{
113113
local domain="${1?}"
114114
domain="$(sed 's|http.\?://||;s|\(/.*\)||' <<<"${domain}")"
115+
if ! ping -c1 -w1 -q "${domain}" &>/dev/null; then
116+
unset domain
117+
fi
115118
if [[ "${domain}" == "" ]] || is_an_ip "${domain}"; then
116119
echo "warning: No domain found. Defaulting to '$(hostname)'"
117120
domain="$(hostname)"

tests/system_tests.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import os
2020
import signal
2121
from urllib.request import urlopen
22-
from subprocess import run, PIPE
22+
from subprocess import run, getstatusoutput, PIPE
2323

2424
processes_must_be_running = [
2525
'apache2',
@@ -167,6 +167,10 @@ def check_notify_push():
167167
print(result.stdout)
168168
return False
169169

170+
def is_lxc():
171+
"check that we are running inside a LXC container"
172+
(exitcode, output) = getstatusoutput('grep -q container=lxc /proc/1/environ')
173+
return exitcode == 0
170174

171175
def signal_handler(sig, frame):
172176
sys.exit(0)
@@ -206,17 +210,29 @@ def signal_handler(sig, frame):
206210
except:
207211
dockers_running = ''
208212

213+
# detect if we are running this in a LXC instance
214+
try:
215+
lxc_running = run(['lxc', 'info', 'ncp'], stdout=PIPE, check = True)
216+
except:
217+
lxc_running = False
218+
209219
# local method
210220
if os.path.exists('/usr/local/etc/ncp-baseimage'):
211221
print(tc.brown + "* local NCP instance detected" + tc.normal)
212-
binaries_must_be_installed = binaries_must_be_installed + binaries_no_docker
222+
if not is_lxc():
223+
binaries_must_be_installed = binaries_must_be_installed + binaries_no_docker
213224
pre_cmd = []
214225

215226
# docker method
216227
elif 'ownyourbits/nextcloudpi-' in dockers_running:
217228
print( tc.brown + "* local NCP docker instance detected" + tc.normal)
218229
pre_cmd = ['docker', 'exec', '-ti', 'nextcloudpi']
219230

231+
# LXC method
232+
elif lxc_running:
233+
print( tc.brown + "* local LXC instance detected" + tc.normal)
234+
pre_cmd = ['lxc', 'exec', 'ncp', '--']
235+
220236
# SSH method
221237
else:
222238
if len(args) == 0:

0 commit comments

Comments
 (0)