mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-05-01 16:30:17 +00:00
* Testing more code in CI environments. * Added strict option checking for `./configure' in CI environments. Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
322 lines
14 KiB
YAML
322 lines
14 KiB
YAML
name: Build
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev
|
|
pull_request:
|
|
branches:
|
|
- dev
|
|
types: [opened, synchronize, reopened]
|
|
release:
|
|
types: [created]
|
|
jobs:
|
|
coverage:
|
|
name: Coverage (ubuntu-latest)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Install Ubuntu Prerequisites
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev
|
|
sudo apt-get install rrdtool librrd-dev
|
|
sudo apt-get install libpcre3-dev libmaxminddb-dev lcov
|
|
- name: Configure
|
|
run: env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages --enable-code-coverage --with-pcre --with-maxminddb --enable-tls-sigs
|
|
- name: Build
|
|
run: make all
|
|
- name: Test
|
|
run: |
|
|
./tests/do.sh
|
|
./tests/do-unit.sh
|
|
./tests/do-dga.sh
|
|
- name: Generate Coverage Report
|
|
run: |
|
|
mkdir -p coverage_report/ndpi_coverage_report
|
|
lcov --directory . --capture --output-file lcov.info
|
|
genhtml -o coverage_report/ndpi_coverage_report lcov.info
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ndpi-coverage-report
|
|
path: coverage_report
|
|
retention-days: 7
|
|
|
|
test:
|
|
name: ${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.gcrypt }} ${{ matrix.compiler }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} ${{ matrix.msan }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false # Debugging purposes, switch to true when all issues on big endian is solved
|
|
matrix:
|
|
os: ["ubuntu-latest", "ubuntu-18.04", "macOS-latest", "macos-11"]
|
|
arch: ["x86_64"]
|
|
gcrypt: ["--with-local-libgcrypt", ""]
|
|
compiler: ["default-cc"]
|
|
pcre: [""]
|
|
maxminddb: [""]
|
|
msan: [""]
|
|
include:
|
|
- compiler: "gcc-7"
|
|
os: ubuntu-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "gcc-10"
|
|
os: ubuntu-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "clang-7"
|
|
os: ubuntu-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "clang-12"
|
|
os: ubuntu-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "default-cc"
|
|
os: ubuntu-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "default-cc"
|
|
os: ubuntu-18.04
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "default-cc"
|
|
os: macOS-latest
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "" # Disable sanitizer on macos
|
|
- compiler: "default-cc"
|
|
os: macos-11
|
|
arch: "x86_64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "" # Disable sanitizer on macos
|
|
- compiler: "default-cc"
|
|
os: ubuntu-latest
|
|
arch: "arm64"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "" # Disable sanitizer on arm64
|
|
- compiler: "default-cc"
|
|
os: ubuntu-latest
|
|
arch: "armhf"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: "--with-sanitizer"
|
|
- compiler: "default-cc"
|
|
os: ubuntu-latest
|
|
arch: "s390x"
|
|
gcrypt: ""
|
|
pcre: "--with-pcre"
|
|
maxminddb: "--with-maxminddb"
|
|
msan: ""
|
|
steps:
|
|
- name: Setup multiarch/qemu-user-static
|
|
if: startsWith(matrix.os, 'ubuntu') && !startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
|
- name: Install Ubuntu Prerequisites
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev
|
|
sudo apt-get install gcc-mingw-w64 libc6-dev
|
|
sudo apt-get install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe python3-pip
|
|
sudo apt-get install rrdtool librrd-dev
|
|
- name: Install Ubuntu Prerequisites (libgcrypt)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.gcrypt, '--with-local-libgcrypt')
|
|
run: |
|
|
sudo apt-get install libgcrypt20-dev
|
|
- name: Install Ubuntu Prerequisites (libpcre)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.pcre, '--with-pcre')
|
|
run: |
|
|
sudo apt-get install libpcre3-dev
|
|
- name: Install Ubuntu Prerequisites (maxminddb)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.maxminddb, '--with-maxminddb')
|
|
run: |
|
|
sudo apt-get install libmaxminddb-dev
|
|
- name: Setup Ubuntu specified compiler (gcc)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'gcc')
|
|
run: |
|
|
sudo apt-get install ${{ matrix.compiler }}
|
|
- name: Setup Ubuntu specified compiler (clang)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'clang')
|
|
run: |
|
|
sudo apt-get install ${{ matrix.compiler }}
|
|
- name: Installing MacOS prerequisites
|
|
if: startsWith(matrix.os, 'macOS') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
brew install autoconf automake libtool pkg-config gettext json-c
|
|
brew install coreutils
|
|
brew install rrdtool
|
|
- name: Install MacOS Prerequisites (libgcrypt)
|
|
if: startsWith(matrix.os, 'macOS') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.gcrypt, '--with-local-libgcrypt')
|
|
run: |
|
|
brew install libgcrypt
|
|
- name: Install MacOS Prerequisites (libpcre)
|
|
if: startsWith(matrix.os, 'macOS') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.pcre, '--with-pcre')
|
|
run: |
|
|
brew install pcre
|
|
- name: Install MacOS Prerequisites (maxminddb)
|
|
if: startsWith(matrix.os, 'macOS') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.maxminddb, '--with-maxminddb')
|
|
run: |
|
|
brew install libmaxminddb
|
|
- name: Configure nDPI on Ubuntu
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'default-cc')
|
|
run: |
|
|
env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs
|
|
- name: Configure nDPI on MacOS
|
|
if: startsWith(matrix.os, 'macOS') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'default-cc')
|
|
run: |
|
|
env CC=clang CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs
|
|
- name: Configure nDPI with specified GCC version on Ubuntu
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'gcc')
|
|
run: |
|
|
env CC=${{ matrix.compiler }} CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs
|
|
- name: Configure nDPI with specified CLANG on Ubuntu
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64') && startsWith(matrix.compiler, 'clang')
|
|
run: |
|
|
env CC=${{ matrix.compiler }} CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs
|
|
- name: Build nDPI
|
|
if: startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
make all
|
|
make -C example ndpiSimpleIntegration
|
|
make -C rrdtool
|
|
make -C python
|
|
- name: Install nDPI
|
|
if: startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
make install DESTDIR=$(realpath _install)
|
|
ls -alhHR _install
|
|
- name: Test nDPI [DIFF]
|
|
if: startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
./tests/do.sh
|
|
- name: Test nDPI [UNIT]
|
|
if: startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
./tests/do-unit.sh
|
|
- name: Test nDPI [DGA]
|
|
if: startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
./tests/do-dga.sh
|
|
- name: Generate tarball
|
|
if: startsWith(matrix.os, 'ubuntu-latest') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
make dist
|
|
- name: Generate documentation
|
|
if: startsWith(matrix.os, 'ubuntu-latest') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
pip3 install --user sphinxcontrib.swaggerdoc
|
|
make -C doc text
|
|
make -C doc html
|
|
- name: Configure nDPI [Mingw-w64] (runs only on ubuntu jobs)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
make distclean && ./autogen.sh --enable-option-checking=fatal --host=x86_64-w64-mingw32 ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs
|
|
- name: Build nDPI [Mingw-w64] (runs only on ubuntu jobs)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'x86_64')
|
|
run: |
|
|
make all
|
|
- name: Display qemu specified architecture (arm64 - little endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'arm64')
|
|
uses: docker://multiarch/ubuntu-core:arm64-bionic
|
|
with:
|
|
args: >
|
|
bash -c
|
|
"uname -a &&
|
|
lscpu | grep Endian
|
|
"
|
|
- name: Configure, compile and test using qemu for the specified architecture (arm64 - little endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'arm64')
|
|
uses: docker://multiarch/ubuntu-core:arm64-bionic
|
|
with:
|
|
args: >
|
|
bash -c
|
|
"apt-get -y update &&
|
|
apt-get -y install git autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev libgcrypt20-dev libpcre3-dev libmaxminddb-dev rrdtool librrd-dev &&
|
|
env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs &&
|
|
make all &&
|
|
make -C example ndpiSimpleIntegration &&
|
|
make -C rrdtool &&
|
|
make -C python &&
|
|
./tests/do.sh &&
|
|
./tests/do-unit.sh
|
|
"
|
|
- name: Display qemu specified architecture (armhf - little endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'armhf')
|
|
uses: docker://multiarch/ubuntu-core:armhf-bionic
|
|
with:
|
|
args: >
|
|
bash -c
|
|
"uname -a &&
|
|
lscpu | grep Endian
|
|
"
|
|
- name: Configure, compile and test using qemu for the specified architecture (armhf - little endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 'armhf')
|
|
uses: docker://multiarch/ubuntu-core:armhf-bionic
|
|
with:
|
|
args: >
|
|
bash -c
|
|
"apt-get -y update &&
|
|
apt-get -y install git autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev libgcrypt20-dev libpcre3-dev libmaxminddb-dev rrdtool librrd-dev &&
|
|
env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs &&
|
|
make all &&
|
|
make -C example ndpiSimpleIntegration &&
|
|
make -C rrdtool &&
|
|
make -C python &&
|
|
./tests/do.sh &&
|
|
./tests/do-unit.sh
|
|
"
|
|
- name: Display qemu specified architecture (s390x - big endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 's390x')
|
|
uses: docker://multiarch/ubuntu-core:s390x-bionic
|
|
with:
|
|
args: >
|
|
bash -c
|
|
"uname -a &&
|
|
lscpu | grep Endian
|
|
"
|
|
- name: Configure and compile (no tests) using qemu for the specified architecture (s390x - big endian)
|
|
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.arch, 's390x')
|
|
uses: docker://multiarch/ubuntu-core:s390x-bionic
|
|
with: #./tests/do.sh disabled because we know we have some problems with big-endian machines
|
|
args: >
|
|
bash -c
|
|
"apt-get -y update &&
|
|
apt-get -y install git autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev libgcrypt20-dev libpcre3-dev libmaxminddb-dev rrdtool librrd-dev &&
|
|
env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-option-checking=fatal --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} --enable-tls-sigs &&
|
|
make all &&
|
|
make -C example ndpiSimpleIntegration &&
|
|
make -C rrdtool &&
|
|
make -C python &&
|
|
./tests/do-unit.sh
|
|
"
|