diff options
author | Zied Aouini <aouinizied@gmail.com> | 2021-09-22 12:10:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-22 12:10:52 +0200 |
commit | 0994771974d686aa5395c5ba0fe71acef0d62e9d (patch) | |
tree | c86c95df6bd80ac0bfe16cbc8ecc88bcf4fe959c /.github | |
parent | 9717afb2dafdfec24e5431c70eb506d392bf1ef2 (diff) |
Improve CI (#1303)
* Improve CI pipeline
* Fix branch name.
* Fix branch name.
* Fix libgcrypt configuration.
* Update build.yml
* Move to Github Actions instead of Travis CI.
* Fix mingw on ubuntu bionic.
* Reactivate cross compile on Ubuntu Bionic.
* Switch to single line steps.
* Add several compilers versions
* Minor fix.
* Fix build all and delete cxx
* Fix RCE detection.
* Fix PCRE configuration.
* Add condition on PCRE test pcap.
* Update WebattackRCE.pcap.out
* Add missing SUBST.
* Delete WebattackRCE.pcap.out
* Update WebAttackRCE result.
* Fix typo.
* Extend jobs with pcre+msan+maxminddb.
* Fix code inpector warnings.
* Delete .appveyor.yml
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/build.yml | 183 |
1 files changed, 157 insertions, 26 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8e3abfc6b..b9cef47be 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,36 +2,167 @@ name: Build on: push: branches: - - master + - dev pull_request: + branches: + - dev types: [opened, synchronize, reopened] + release: + types: [created] jobs: - sonarcloud: - name: SonarCloud - runs-on: ubuntu-latest + test: + name: ${{ matrix.os }} ${{ matrix.gcrypt }} ${{ matrix.compiler }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} ${{ matrix.msan }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: ["ubuntu-latest", "ubuntu-18.04", "macOS-latest", "macos-11"] + gcrypt: ["--disable-gcrypt", ""] + compiler: ["default-cc"] + pcre: [""] + maxminddb: [""] + msan: [""] + include: + - compiler: "gcc-7" + os: ubuntu-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "gcc-10" + os: ubuntu-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "clang-7" + os: ubuntu-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "clang-12" + os: ubuntu-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "default-cc" + os: ubuntu-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "default-cc" + os: ubuntu-18.04 + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "default-cc" + os: macOS-latest + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" + - compiler: "default-cc" + os: macos-11 + gcrypt: "" + pcre: "--with-pcre" + maxminddb: "--with-maxminddb" + msan: "--with-sanitizer" steps: - uses: actions/checkout@v2 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Install dependencies - run: sudo apt-get install build-essential libc6-dev libpcap-dev libjson-c-dev libgcrypt20-dev gcc-arm-linux-gnueabihf gcc-mingw-w64 - - name: Configure - run: env CFLAGS='-Werror' ./autogen.sh - - name: Build - run: make all - - name: Test DIFF - run: ./tests/do.sh - - name: Test UNIT - run: ./tests/unit/unit - - name: Configure (with debug logs) - run: make distclean && env CFLAGS='-Werror' ./autogen.sh --enable-debug-messages - - name: Build - run: make all - - name: Configure ARM - run: make distclean && env CFLAGS='-Werror' ./autogen.sh --host=arm-linux-gnueabihf --with-only-libndpi - - name: Build ARM - run: make all - - name: Configure Mingw-w64 - run: make distclean && ./autogen.sh --host=x86_64-w64-mingw32 - - name: Build Mingw-w64 - run: make all + - name: Install Ubuntu Prerequisites + if: startsWith(matrix.os, 'ubuntu') + 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-arm-linux-gnueabihf gcc-mingw-w64 libc6-dev + - name: Install Ubuntu Prerequisites (libgcrypt) + if: startsWith(matrix.os, 'ubuntu') && !startsWith(matrix.gcrypt, '--disable-gcrypt') + run: | + sudo apt-get install libgcrypt20-dev + - name: Install Ubuntu Prerequisites (libpcre) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.pcre, '--with-pcre') + run: | + sudo apt-get install libpcre3-dev + - name: Install Ubuntu Prerequisites (maxminddb) + if: startsWith(matrix.os, 'ubuntu') && 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.compiler, 'gcc') + run: | + sudo apt-get install ${{ matrix.compiler }} + - name: Setup Ubuntu specified compiler (clang) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'clang') + run: | + sudo apt-get install ${{ matrix.compiler }} + - name: Installing MacOS prerequisites + if: startsWith(matrix.os, 'macOS') + run: | + brew install autoconf automake libtool pkg-config gettext json-c + - name: Install MacOS Prerequisites (libgcrypt) + if: startsWith(matrix.os, 'macOS') && !startsWith(matrix.gcrypt, '--disable-gcrypt') + run: | + brew install libgcrypt + - name: Install MacOS Prerequisites (libpcre) + if: startsWith(matrix.os, 'macOS') && startsWith(matrix.pcre, '--with-pcre') + run: | + brew install pcre + - name: Install MacOS Prerequisites (maxminddb) + if: startsWith(matrix.os, 'macOS') && startsWith(matrix.maxminddb, '--with-maxminddb') + run: | + brew install libmaxminddb + - name: Configure nDPI on Ubuntu + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'default-cc') + run: | + env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Configure nDPI on MacOS + if: startsWith(matrix.os, 'macOS') && startsWith(matrix.compiler, 'default-cc') + run: | + env CC=clang CFLAGS='-Werror' ./autogen.sh --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Configure nDPI with specified GCC version on Ubuntu + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'gcc') + run: | + env CC=${{ matrix.compiler }} CFLAGS='-Werror' ./autogen.sh --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Configure nDPI with specified CLANG on Ubuntu + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'clang') + run: | + env CC=${{ matrix.compiler }} CFLAGS='-Werror' ./autogen.sh --enable-debug-messages ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Compile nDPI + run: | + make all + cd example + make ndpiSimpleIntegration + cd ../python + make + cd .. + - name: Test nDPI [DIFF] + run: | + ./tests/do.sh + - name: Test nDPI [UNIT] + run: | + ./tests/do-unit.sh + - name: Test nDPI [DGA] + run: | + ./tests/do-dga.sh + - name: Configure nDPI [ARM] (runs only on ubuntu jobs) + if: startsWith(matrix.os, 'ubuntu') + run: | + make distclean && env CFLAGS='-Werror' ./autogen.sh --host=arm-linux-gnueabihf --with-only-libndpi ${{ matrix.gcrypt }} ${{ matrix.msan }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Build nDPI [ARM] (runs only on ubuntu jobs) + if: startsWith(matrix.os, 'ubuntu') + run: | + make all + - name: Configure nDPI [Mingw-w64] (runs only on ubuntu jobs) + if: startsWith(matrix.os, 'ubuntu') + run: | + make distclean && ./autogen.sh --host=x86_64-w64-mingw32 ${{ matrix.gcrypt }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} + - name: Build nDPI [Mingw-w64] (runs only on ubuntu jobs) + if: startsWith(matrix.os, 'ubuntu') + run: | + make all |