Github Actions integration

Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
This commit is contained in:
Toni Uhlig
2021-09-17 17:45:08 +02:00
parent c5be804725
commit 4fa1694b05
5 changed files with 90 additions and 5 deletions

42
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: Build
on:
push:
branches:
- master
pull_request:
branches:
- master
types: [opened, synchronize, reopened]
release:
types: [created]
jobs:
test:
name: ${{ matrix.os }} ${{ matrix.gcrypt }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: ["ubuntu-latest", "ubuntu-18.04"]
ndpid_gcrypt: ["-DNDPI_WITH_GCRYPT=OFF", ""]
steps:
- 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')
run: |
sudo apt-get update
sudo apt-get install autoconf automake cmake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev
sudo apt-get install gcc-arm-linux-gnueabihf gcc-mingw-w64 libc6-dev
- name: Install Ubuntu Prerequisites (libgcrypt)
if: startsWith(matrix.os, 'ubuntu') && !startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF')
run: |
sudo apt-get install libgcrypt20-dev
- name: Configure nDPI
run: |
mkdir build && cd build
env CMAKE_C_FLAGS='-Werror' cmake .. -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DENABLE_SANITIZER=ON ${{ matrix.ndpid_gcrypt }}
- name: Build nDPI
run: |
make -C build all

View File

@@ -107,6 +107,10 @@ if(ENABLE_SANITIZER_THREAD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined -fno-sanitize=alignment -fsanitize=enum -fsanitize=thread")
endif()
if(NOT NDPI_WITH_GCRYPT)
set(NDPI_ADDITIONAL_ARGS "--disable-gcrypt")
endif()
if(STATIC_LIBNDPI_INSTALLDIR STREQUAL "" AND BUILD_NDPI)
include(ExternalProject)
ExternalProject_Add(
@@ -117,6 +121,7 @@ if(STATIC_LIBNDPI_INSTALLDIR STREQUAL "" AND BUILD_NDPI)
CFLAGS=${CMAKE_C_FLAGS}
LDFLAGS=${CMAKE_MODULE_LINKER_FLAGS}
CROSS_COMPILE_TRIPLET=${CROSS_COMPILE_TRIPLET}
ADDITIONAL_ARGS=${NDPI_ADDITIONAL_ARGS}
MAKE_PROGRAM=make
DEST_INSTALL=${CMAKE_BINARY_DIR}/libnDPI
${CMAKE_CURRENT_SOURCE_DIR}/scripts/get-and-build-libndpi.sh
@@ -139,10 +144,6 @@ if(NOT STATIC_LIBNDPI_INSTALLDIR STREQUAL "" OR BUILD_NDPI OR NDPI_NO_PKGCONFIG)
option(NDPI_WITH_PCRE "Link static libndpi library against libpcre." OFF)
option(NDPI_WITH_MAXMINDDB "Link static libndpi library against libmaxminddb." OFF)
if(BUILD_NDPI AND NOT NDPI_WITH_GCRYPT)
message(FATAL_ERROR "BUILD_NDPI enabled, but NDPI_WITH_GCRYPT not. This will lead to unexpected test results.")
endif()
if(NDPI_WITH_GCRYPT)
find_package(GCRYPT "1.4.2" REQUIRED)
endif()
@@ -176,6 +177,7 @@ else()
endif()
find_package(PCAP "1.8.1" REQUIRED)
target_compile_options(nDPId PRIVATE "-pthread")
target_compile_definitions(nDPId PRIVATE -DGIT_VERSION=\"${GIT_VERSION}\" ${NDPID_DEFS} ${ZLIB_DEFS})
target_include_directories(nDPId PRIVATE

View File

@@ -32,6 +32,8 @@ struct nDPId_return_value
unsigned long long int detected_flow_protocols;
unsigned long long int total_active_flows;
unsigned long long int total_idle_flows;
unsigned long long int cur_active_flows;
unsigned long long int cur_idle_flows;
};
struct distributor_return_value
@@ -316,6 +318,8 @@ static void * nDPId_mainloop_thread(void * const arg)
nrv->detected_flow_protocols = reader_threads[i].workflow->detected_flow_protocols;
nrv->total_active_flows = reader_threads[i].workflow->total_active_flows;
nrv->total_idle_flows = reader_threads[i].workflow->total_idle_flows;
nrv->cur_active_flows = reader_threads[i].workflow->cur_active_flows;
nrv->cur_idle_flows = reader_threads[i].workflow->cur_idle_flows;
}
error:
@@ -500,5 +504,30 @@ int main(int argc, char ** argv)
return 1;
}
if (nDPId_return.cur_active_flows != 0 || nDPId_return.cur_idle_flows != 0)
{
fprintf(stderr, "%s: %s\n", argv[0], "Active / Idle inconsistency detected.");
return 1;
}
if (nDPId_return.total_skipped_flows != 0)
{
fprintf(stderr, "%s: %s\n", argv[0], "Skipped flow detected, that should not happen.");
return 1;
}
#ifdef ENABLE_ZLIB
if (zlib_compressions != zlib_decompressions)
{
fprintf(stderr,
"%s: %s (%llu != %llu)\n",
argv[0],
"ZLib compression / decompression inconsistency detected.",
zlib_compressions,
zlib_decompressions);
return 1;
}
#endif
return THREADS_RETURNED_ERROR();
}

View File

@@ -25,7 +25,7 @@ if [ ! -z "${CROSS_COMPILE_TRIPLET}" ]; then
else
HOST_ARG=""
fi
./autogen.sh --prefix="${DEST_INSTALL}" --with-only-libndpi ${HOST_ARG}
./autogen.sh --prefix="${DEST_INSTALL}" --with-only-libndpi ${HOST_ARG} ${ADDITIONAL_ARGS}
${MAKE_PROGRAM} install
rm -f "${LOCKFILE}"

12
sonar-project.properites Normal file
View File

@@ -0,0 +1,12 @@
sonar.projectKey=lnslbrty_nDPId
sonar.organization=lnslbrty
# This is the name and version displayed in the SonarCloud UI.
#sonar.projectName=nDPId
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8