name: cbindgen
path: .
+ almalinux-10:
+ name: AlmaLinux 10 (schema, plugins)
+ runs-on: ubuntu-latest
+ container: almalinux:10
+ needs: [prepare-deps, prepare-cbindgen]
+ steps:
+ # Cache Rust stuff.
+ - name: Cache cargo registry
+ uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
+ with:
+ path: ~/.cargo/registry
+ key: cargo-registry
+
+ - name: Determine number of CPUs
+ run: echo CPUS=$(nproc --all) >> $GITHUB_ENV
+
+ - name: Install system packages
+ run: |
+ dnf -y install dnf-plugins-core epel-release
+ dnf config-manager --set-enabled crb
+ dnf -y install \
+ autoconf \
+ automake \
+ cargo-vendor \
+ cbindgen \
+ diffutils \
+ numactl-devel \
+ dpdk-devel \
+ file-devel \
+ gcc \
+ gcc-c++ \
+ git \
+ hwloc \
+ hwloc-devel \
+ jansson-devel \
+ jq \
+ libtool \
+ libyaml-devel \
+ libnfnetlink-devel \
+ libnetfilter_queue-devel \
+ libnet-devel \
+ libcap-ng-devel \
+ libevent-devel \
+ libmaxminddb-devel \
+ libpcap-devel \
+ libtool \
+ lz4-devel \
+ make \
+ pcre2-devel \
+ pkgconfig \
+ python3-devel \
+ python3-sphinx \
+ python3-yaml \
+ rust-toolset \
+ sudo \
+ which \
+ zlib-devel
+ # These packages required to build the PDF.
+ dnf -y install \
+ texlive-latex \
+ texlive-cmap \
+ texlive-collection-latexrecommended \
+ texlive-fncychap \
+ texlive-titlesec \
+ texlive-tabulary \
+ texlive-framed \
+ texlive-wrapfig \
+ texlive-upquote \
+ texlive-capt-of \
+ texlive-needspace
+
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ - run: git config --global --add safe.directory /__w/suricata/suricata
+ - uses: ./.github/actions/install-cbindgen
+ # Download and extract dependency archives created during prep
+ # job.
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
+ with:
+ name: prep
+ path: prep
+ - run: tar xvf prep/suricata-update.tar.gz
+ - run: tar xvf prep/suricata-verify.tar.gz
+ - name: Configuring
+ run: |
+ ./autogen.sh
+ CFLAGS="${DEFAULT_CFLAGS}" ./configure --enable-warnings
+ - run: make -j ${{ env.CPUS }} distcheck
+ env:
+ DISTCHECK_CONFIGURE_FLAGS: "--enable-unittests --enable-debug --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk"
+ MAKEFLAGS: "-j ${{ env.CPUS }}"
+ - run: test -e doc/userguide/suricata.1
+
+ - name: Building Rust documentation
+ run: make doc
+ working-directory: rust
+ - run: make install install-conf
+ - run: suricatasc -h
+ - run: suricata-update -V
+ - run: suricata-update
+
+ - name: Check if Suricata-Update example configuration files are installed
+ run: |
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/disable.conf
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/drop.conf
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/enable.conf
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/modify.conf
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/threshold.in
+ test -e /usr/local/lib/suricata/python/suricata/update/configs/update.yaml
+
+ - name: Test capture plugin
+ working-directory: examples/plugins/ci-capture
+ run: |
+ make
+ ../../../src/suricata -S /dev/null --set plugins.0=./capture.so --capture-plugin=ci-capture --runmode=single -l . -c ../../../suricata.yaml
+ cat eve.json | jq -c 'select(.dns)'
+ test $(cat eve.json | jq -c 'select(.dns)' | wc -l) = "1"
+
+ - name: Test app-layer plugin
+ working-directory: examples/plugins/altemplate
+ run: |
+ cargo build
+ ../../../src/suricata -S altemplate.rules --set plugins.0=./target/debug/libsuricata_altemplate.so --runmode=single -l . -c altemplate.yaml -k none -r ../../../rust/src/applayertemplate/template.pcap
+ cat eve.json | jq -c 'select(.altemplate)'
+ test $(cat eve.json | jq -c 'select(.altemplate)' | wc -l) = "3"
+ # we get 2 alerts and 1 altemplate events
+
+ - name: Test library build in tree
+ working-directory: examples/lib/simple
+ run: make clean all
+
+ - name: Test plugin build in tree
+ working-directory: examples/plugins/c-json-filetype
+ run: make clean all
+
+ - name: Build example C custom logger plugin
+ working-directory: examples/plugins/c-custom-loggers
+ run: make clean all
+
+ - name: Install Suricata and library
+ run: make install install-headers install-library
+
+ - name: Test library build out of tree
+ working-directory: examples/lib/simple
+ run: PATH=/usr/local/bin:$PATH make -f Makefile.example clean all
+
+ - name: Test custom lib example
+ run: |
+ make
+ ./custom -- ../../../qa/docker/pcaps/tls.pcap
+ test $(cat eve.json |jq 'select(.stats) | .stats.decoder.pkts') = 110
+ working-directory: examples/lib/custom
+
+ - name: Cleaning source directory for standalone plugin test.
+ run: make clean
+
+ - name: Test plugin against installed headers
+ working-directory: examples/plugins/c-json-filetype
+ run: |
+ # First use sed to pretend we are a user following our
+ # directions for building a standalone plugin.
+ sed -i 's/^#LIBSURICATA_CONFIG/LIBSURICATA_CONFIG/' Makefile
+ sed -i 's/^#CPPFLAGS/CPPFLAGS/' Makefile
+ sed -i 's/^CPPFLAGS.*HAVE_CONFIG_H//' Makefile
+
+ # And build.
+ PATH=/usr/local/bin:$PATH make clean all
+
+ - name: Check EVE schema ordering
+ run: ./scripts/schema-sort.py --check ./etc/schema.json
+
almalinux-9:
name: AlmaLinux 9 (schema)
runs-on: ubuntu-latest