summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml131
1 files changed, 131 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 000000000..87c1f04c5
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,131 @@
+image: debian:stable
+
+stages:
+ - build_and_test
+
+before_script:
+ - export DEBIAN_FRONTEND=noninteractive
+ - apt-get update -qq
+ - >
+ apt-get install -y -qq \
+ coreutils sudo \
+ build-essential make cmake binutils gcc clang autoconf automake \
+ libtool pkg-config git wget unzip \
+ libpcap-dev libgpg-error-dev libjson-c-dev zlib1g-dev \
+ netcat-openbsd python3 python3-jsonschema tree lcov iproute2
+
+after_script:
+ - test -r /tmp/nDPIsrvd.log && cat /tmp/nDPIsrvd.log
+ - test -r /tmp/nDPId.log && cat /tmp/nDPId.log
+
+build_and_test_static_libndpi_tsan:
+ script:
+ # test for NETWORK_BUFFER_MAX_SIZE C and Python value equality
+ - C_VAL=$(cat config.h | sed -n 's/^#define\s\+NETWORK_BUFFER_MAX_SIZE\s\+\([0-9]\+\).*$/\1/gp')
+ - PY_VAL=$(cat dependencies/nDPIsrvd.py | sed -n 's/^NETWORK_BUFFER_MAX_SIZE = \([0-9]\+\).*$/\1/gp')
+ - test ${C_VAL} = ${PY_VAL}
+ # test for nDPId_PACKETS_PLEN_MAX C and Python value equality
+ - C_VAL=$(cat config.h | sed -n 's/^#define\s\+nDPId_PACKETS_PLEN_MAX\s\+\([0-9]\+\).*$/\1/gp')
+ - PY_VAL=$(cat dependencies/nDPIsrvd.py | sed -n 's/^nDPId_PACKETS_PLEN_MAX = \([0-9]\+\).*$/\1/gp')
+ - test ${C_VAL} = ${PY_VAL}
+ # static linked build
+ - mkdir build-clang-tsan
+ - cd build-clang-tsan
+ - env CMAKE_C_FLAGS='-Werror' CMAKE_C_COMPILER='clang' cmake .. -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DBUILD_NDPI_FORCE_GIT_UPDATE=ON -DENABLE_SANITIZER_THREAD=ON -DENABLE_ZLIB=ON
+ - make clean-libnDPI
+ - make libnDPI
+ - tree libnDPI
+ - make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
+ - cd ..
+ - ./_install/usr/local/bin/nDPId-test
+ - ./test/run_tests.sh ./libnDPI ./_install/usr/local/bin/nDPId-test
+ artifacts:
+ expire_in: 1 week
+ paths:
+ - _install/
+ stage: build_and_test
+
+build_and_test_static_libndpi:
+ script:
+ - mkdir build-cmake-submodule
+ - cd build-cmake-submodule
+ - env CMAKE_C_FLAGS='-Werror' cmake .. -DENABLE_SYSTEMD=ON -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DBUILD_NDPI_FORCE_GIT_UPDATE=ON -DENABLE_ZLIB=ON
+ - make clean-libnDPI
+ - make libnDPI
+ - tree libnDPI
+ - make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
+ - cpack -G DEB
+ - sudo dpkg -i nDPId-*.deb
+ - cd ..
+ - test -x /bin/systemctl && sudo systemctl daemon-reload
+ - test -x /bin/systemctl && sudo systemctl enable ndpid@lo
+ - test -x /bin/systemctl && sudo systemctl start ndpid@lo
+ - test -x /bin/systemctl && sudo systemctl status ndpisrvd.service ndpid@lo.service
+ - test -x /bin/systemctl && sudo systemctl stop ndpid@lo
+ - ./build-cmake-submodule/nDPId-test
+ - ./test/run_tests.sh ./libnDPI ./build-cmake-submodule/nDPId-test
+ - >
+ if ldd ./build-cmake-submodule/nDPId | grep -qoEi libndpi; then \
+ echo 'nDPId linked against a static libnDPI should not contain a shared linked libnDPI.' >&2; false; fi
+ - cc -Wall -Wextra -std=gnu99 nDPId.c nio.c utils.c -I./build-cmake-submodule/libnDPI/include/ndpi -I. -I./dependencies -I./dependencies/jsmn -I./dependencies/uthash/include -o /tmp/a.out -lpcap ./build-cmake-submodule/libnDPI/lib/libndpi.a -pthread -lm -lz
+ artifacts:
+ expire_in: 1 week
+ paths:
+ - build-cmake-submodule/*.deb
+ - _install/
+ stage: build_and_test
+
+build_and_test_static_libndpi_coverage:
+ script:
+ - mkdir build-cmake-submodule
+ - cd build-cmake-submodule
+ - env CMAKE_C_FLAGS='-Werror' cmake .. -DENABLE_SYSTEMD=ON -DENABLE_COVERAGE=ON -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DBUILD_NDPI_FORCE_GIT_UPDATE=ON -DENABLE_SANITIZER=ON -DENABLE_ZLIB=ON
+ - make clean-libnDPI
+ - make libnDPI
+ - tree libnDPI
+ - make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
+ - cd ..
+ - ./build-cmake-submodule/nDPId-test
+ - ./test/run_tests.sh ./libnDPI ./build-cmake-submodule/nDPId-test
+ # generate coverage report
+ - make -C ./build-cmake-submodule coverage || true
+ - >
+ if ldd build/nDPId | grep -qoEi libndpi; then \
+ echo 'nDPId linked against a static libnDPI should not contain a shared linked libnDPI.' >&2; false; fi
+ artifacts:
+ expire_in: 1 week
+ paths:
+ - build-cmake-submodule/coverage_report
+ - _install/
+ stage: build_and_test
+
+build_dynamic_libndpi:
+ script:
+ # pkg-config dynamic linked build
+ - git clone https://github.com/ntop/nDPI.git
+ - cd nDPI
+ - ./autogen.sh --prefix="$(realpath ../_install)" --enable-option-checking=fatal
+ - make install V=s
+ - cd ..
+ - tree ./_install
+ - mkdir build
+ - cd build
+ - export CMAKE_PREFIX_PATH="$(realpath ../_install)"
+ - env CMAKE_C_FLAGS='-Werror' cmake .. -DBUILD_EXAMPLES=ON -DENABLE_SANITIZER=ON -DENABLE_MEMORY_PROFILING=ON -DENABLE_ZLIB=ON
+ - make all VERBOSE=1
+ - make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
+ - cd ..
+ - tree ./_install
+ - ./build/nDPId-test
+ - ./build/nDPId -h || test $? -eq 1
+ - ./build/nDPIsrvd -h || test $? -eq 1
+ # dameon start/stop test
+ - NUSER=nobody make -C ./build daemon VERBOSE=1
+ - NUSER=nobody make -C ./build daemon VERBOSE=1
+ # make dist
+ - make -C ./build dist
+ artifacts:
+ expire_in: 1 week
+ paths:
+ - _install/
+ stage: build_and_test