mirror of https://github.com/OISF/suricata
github-actions: builds for our tier one linux distributions
Example of using GitHub actions to perform builds across CentOS, Ubuntu, Debian and the latest Fedora.pull/4393/head
parent
218a5c4345
commit
3887f8d1f3
@ -0,0 +1,548 @@
|
|||||||
|
name: builds
|
||||||
|
|
||||||
|
on:
|
||||||
|
- push
|
||||||
|
- pull_request
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
centos-8:
|
||||||
|
name: CentOS 8
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: centos:8
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# Cache Rust stuff.
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: cargo-registry
|
||||||
|
|
||||||
|
- name: Install system packages
|
||||||
|
run: |
|
||||||
|
yum -y install dnf-plugins-core
|
||||||
|
yum config-manager --set-enabled PowerTools
|
||||||
|
yum -y install \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
cargo-vendor \
|
||||||
|
diffutils \
|
||||||
|
file-devel \
|
||||||
|
gcc \
|
||||||
|
gcc-c++ \
|
||||||
|
git \
|
||||||
|
jansson-devel \
|
||||||
|
jq \
|
||||||
|
lua-devel \
|
||||||
|
libtool \
|
||||||
|
libyaml-devel \
|
||||||
|
libnfnetlink-devel \
|
||||||
|
libnetfilter_queue-devel \
|
||||||
|
libnet-devel \
|
||||||
|
libcap-ng-devel \
|
||||||
|
libevent-devel \
|
||||||
|
libmaxminddb-devel \
|
||||||
|
libpcap-devel \
|
||||||
|
libtool \
|
||||||
|
lz4-devel \
|
||||||
|
make \
|
||||||
|
nss-devel \
|
||||||
|
pcre-devel \
|
||||||
|
pkgconfig \
|
||||||
|
python3-devel \
|
||||||
|
python3-sphinx \
|
||||||
|
python3-yaml \
|
||||||
|
rust-toolset \
|
||||||
|
sudo \
|
||||||
|
which \
|
||||||
|
zlib-devel
|
||||||
|
# These packages required to build the PDF.
|
||||||
|
yum -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@v1
|
||||||
|
- name: Bundling libhtp
|
||||||
|
run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- name: Bundling suricata-update
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
https://github.com/OISF/suricata-update/archive/master.tar.gz | \
|
||||||
|
tar zxvf - --strip-components=1
|
||||||
|
working-directory: suricata-update
|
||||||
|
- name: Configuring
|
||||||
|
run: |
|
||||||
|
./autogen.sh
|
||||||
|
./configure --enable-unittests \
|
||||||
|
--enable-debug \
|
||||||
|
--enable-lua \
|
||||||
|
--enable-geoip \
|
||||||
|
--enable-profiling \
|
||||||
|
--enable-profiling-locks
|
||||||
|
- name: Building
|
||||||
|
run: make -j2
|
||||||
|
- name: Running unittests
|
||||||
|
run: make check
|
||||||
|
- name: Building distribution
|
||||||
|
run: |
|
||||||
|
make dist
|
||||||
|
mkdir dist
|
||||||
|
mv suricata-*.tar.gz dist
|
||||||
|
- uses: actions/upload-artifact@v1
|
||||||
|
name: Uploading distribution
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist
|
||||||
|
|
||||||
|
centos-7:
|
||||||
|
name: CentOS 7
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: centos:7
|
||||||
|
needs: centos-8
|
||||||
|
steps:
|
||||||
|
- name: Install system dependencies
|
||||||
|
run: |
|
||||||
|
yum -y install epel-release
|
||||||
|
yum -y install \
|
||||||
|
cargo \
|
||||||
|
diffutils \
|
||||||
|
file-devel \
|
||||||
|
gcc \
|
||||||
|
gcc-c++ \
|
||||||
|
jansson-devel \
|
||||||
|
jq \
|
||||||
|
lua-devel \
|
||||||
|
libtool \
|
||||||
|
libyaml-devel \
|
||||||
|
libnfnetlink-devel \
|
||||||
|
libnetfilter_queue-devel \
|
||||||
|
libnet-devel \
|
||||||
|
libcap-ng-devel \
|
||||||
|
libevent-devel \
|
||||||
|
libmaxminddb-devel \
|
||||||
|
libpcap-devel \
|
||||||
|
lz4-devel \
|
||||||
|
make \
|
||||||
|
nss-devel \
|
||||||
|
pcre-devel \
|
||||||
|
pkgconfig \
|
||||||
|
rust \
|
||||||
|
sudo \
|
||||||
|
which \
|
||||||
|
zlib-devel
|
||||||
|
- name: Download suricata.tar.gz
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
- run: mkdir suricata
|
||||||
|
- working-directory: suricata
|
||||||
|
run: tar zxvf ../dist/suricata-*.tar.gz --strip-components=1
|
||||||
|
- working-directory: suricata
|
||||||
|
run: ./configure
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make -j2
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install-conf
|
||||||
|
|
||||||
|
centos-6:
|
||||||
|
name: CentOS 6
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: centos:6
|
||||||
|
needs: centos-8
|
||||||
|
steps:
|
||||||
|
- name: Install Rust
|
||||||
|
run: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.33.0 -y
|
||||||
|
- run: echo "::add-path::/github/home/.cargo/bin"
|
||||||
|
- name: Install system dependencies
|
||||||
|
run: |
|
||||||
|
yum -y install epel-release
|
||||||
|
yum -y install \
|
||||||
|
file-devel \
|
||||||
|
gcc \
|
||||||
|
gcc-c++ \
|
||||||
|
jq \
|
||||||
|
jansson-devel \
|
||||||
|
make \
|
||||||
|
libyaml-devel \
|
||||||
|
libpcap-devel \
|
||||||
|
pcre-devel \
|
||||||
|
python34-PyYAML \
|
||||||
|
nss-devel \
|
||||||
|
sudo \
|
||||||
|
which \
|
||||||
|
zlib-devel
|
||||||
|
- name: Download suricata.tar.gz
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
- run: mkdir suricata
|
||||||
|
- working-directory: suricata
|
||||||
|
run: tar zxvf ../dist/suricata-*.tar.gz --strip-components=1
|
||||||
|
- working-directory: suricata
|
||||||
|
run: ./configure
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make -j2
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install-conf
|
||||||
|
|
||||||
|
fedora-31:
|
||||||
|
name: Fedora 31
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: fedora:31
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# Cache Rust stuff.
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: cargo-registry
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
dnf -y install \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
cargo \
|
||||||
|
ccache \
|
||||||
|
diffutils \
|
||||||
|
file-devel \
|
||||||
|
gcc \
|
||||||
|
gcc-c++ \
|
||||||
|
git \
|
||||||
|
jansson-devel \
|
||||||
|
jq \
|
||||||
|
lua-devel \
|
||||||
|
libtool \
|
||||||
|
libyaml-devel \
|
||||||
|
libnfnetlink-devel \
|
||||||
|
libnetfilter_queue-devel \
|
||||||
|
libnet-devel \
|
||||||
|
libcap-ng-devel \
|
||||||
|
libevent-devel \
|
||||||
|
libmaxminddb-devel \
|
||||||
|
libpcap-devel \
|
||||||
|
libtool \
|
||||||
|
lz4-devel \
|
||||||
|
make \
|
||||||
|
nspr-devel \
|
||||||
|
nss-devel \
|
||||||
|
nss-softokn-devel \
|
||||||
|
pcre-devel \
|
||||||
|
pkgconfig \
|
||||||
|
python3-yaml \
|
||||||
|
sudo \
|
||||||
|
which \
|
||||||
|
zlib-devel
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- run: ./autogen.sh
|
||||||
|
- run: ./configure --enable-unittests
|
||||||
|
- run: make -j2
|
||||||
|
- run: make check
|
||||||
|
- name: Fetching suricata-verify
|
||||||
|
run: git clone https://github.com/OISF/suricata-verify.git
|
||||||
|
- name: Running suricata-verify
|
||||||
|
run: python3 ./suricata-verify/run.py
|
||||||
|
|
||||||
|
ubuntu-18-04:
|
||||||
|
name: Ubuntu 18.04 (Cocci)
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# Cache Rust stuff.
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: cargo-registry
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt -y install \
|
||||||
|
libpcre3 \
|
||||||
|
libpcre3-dev \
|
||||||
|
build-essential \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
libtool \
|
||||||
|
libpcap-dev \
|
||||||
|
libnet1-dev \
|
||||||
|
libyaml-0-2 \
|
||||||
|
libyaml-dev \
|
||||||
|
libcap-ng-dev \
|
||||||
|
libcap-ng0 \
|
||||||
|
libmagic-dev \
|
||||||
|
libnetfilter-queue-dev \
|
||||||
|
libnetfilter-queue1 \
|
||||||
|
libnfnetlink-dev \
|
||||||
|
libnfnetlink0 \
|
||||||
|
libhiredis-dev \
|
||||||
|
libjansson-dev \
|
||||||
|
libevent-dev \
|
||||||
|
libevent-pthreads-2.1.6 \
|
||||||
|
libjansson-dev \
|
||||||
|
make \
|
||||||
|
parallel \
|
||||||
|
software-properties-common \
|
||||||
|
zlib1g \
|
||||||
|
zlib1g-dev
|
||||||
|
- name: Install Coccinelle
|
||||||
|
run: |
|
||||||
|
sudo add-apt-repository -y ppa:npalix/coccinelle
|
||||||
|
sudo apt -y install coccinelle
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- run: ./autogen.sh
|
||||||
|
- run: ./configure --enable-unittests --enable-coccinelle
|
||||||
|
- run: make -j2
|
||||||
|
- name: Running unit tests and cocci checks
|
||||||
|
# Set the concurrency level for cocci.
|
||||||
|
run: CONCURRENCY_LEVEL=2 make check
|
||||||
|
- name: Fetching suricata-verify
|
||||||
|
run: git clone https://github.com/OISF/suricata-verify.git
|
||||||
|
- name: Running suricata-verify
|
||||||
|
run: ./suricata-verify/run.py
|
||||||
|
|
||||||
|
# An Ubuntu 16.04 build using the tarball generated in the CentOS 8
|
||||||
|
# build above.
|
||||||
|
ubuntu-16-04:
|
||||||
|
name: Ubuntu 16.04
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: ubuntu:16.04
|
||||||
|
needs: centos-8
|
||||||
|
steps:
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt update
|
||||||
|
apt -y install \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
libcap-ng-dev \
|
||||||
|
libcap-ng0 \
|
||||||
|
libevent-dev \
|
||||||
|
libhiredis-dev \
|
||||||
|
libjansson-dev \
|
||||||
|
libmagic-dev \
|
||||||
|
libnet1-dev \
|
||||||
|
libnetfilter-queue-dev \
|
||||||
|
libnetfilter-queue1 \
|
||||||
|
libnfnetlink-dev \
|
||||||
|
libnfnetlink0 \
|
||||||
|
libnss3-dev \
|
||||||
|
libpcre3 \
|
||||||
|
libpcre3-dev \
|
||||||
|
libpcap-dev \
|
||||||
|
libyaml-0-2 \
|
||||||
|
libyaml-dev \
|
||||||
|
make \
|
||||||
|
python3-yaml \
|
||||||
|
zlib1g \
|
||||||
|
zlib1g-dev
|
||||||
|
- name: Install Rust
|
||||||
|
run: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.33.0 -y
|
||||||
|
- run: echo "::add-path::/github/home/.cargo/bin"
|
||||||
|
- name: Download suricata.tar.gz
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
- run: mkdir suricata
|
||||||
|
- name: Extract
|
||||||
|
working-directory: suricata
|
||||||
|
run: tar zxvf ../dist/suricata-*.tar.gz --strip-components=1
|
||||||
|
- name: Configure
|
||||||
|
working-directory: suricata
|
||||||
|
run: ./configure
|
||||||
|
- name: Build
|
||||||
|
working-directory: suricata
|
||||||
|
run: make -j2
|
||||||
|
- name: Testing
|
||||||
|
working-directory: suricata
|
||||||
|
run: make check
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install-conf
|
||||||
|
- working-directory: suricata
|
||||||
|
run: make install-rules
|
||||||
|
|
||||||
|
debian-10:
|
||||||
|
name: Debian 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: debian:10
|
||||||
|
steps:
|
||||||
|
# Cache Rust stuff.
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: cargo-registry
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
apt update
|
||||||
|
apt -y install \
|
||||||
|
automake \
|
||||||
|
autoconf \
|
||||||
|
build-essential \
|
||||||
|
ccache \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
gosu \
|
||||||
|
jq \
|
||||||
|
libpcre3 \
|
||||||
|
libpcre3-dbg \
|
||||||
|
libpcre3-dev \
|
||||||
|
libpcap-dev \
|
||||||
|
libnet1-dev \
|
||||||
|
libyaml-0-2 \
|
||||||
|
libyaml-dev \
|
||||||
|
libcap-ng-dev \
|
||||||
|
libcap-ng0 \
|
||||||
|
libmagic-dev \
|
||||||
|
libjansson-dev \
|
||||||
|
libnss3-dev \
|
||||||
|
libgeoip-dev \
|
||||||
|
liblua5.1-dev \
|
||||||
|
libhiredis-dev \
|
||||||
|
libevent-dev \
|
||||||
|
libtool \
|
||||||
|
m4 \
|
||||||
|
make \
|
||||||
|
python-yaml \
|
||||||
|
pkg-config \
|
||||||
|
rustc \
|
||||||
|
sudo \
|
||||||
|
zlib1g \
|
||||||
|
zlib1g-dev
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Bundling libhtp
|
||||||
|
run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- name: Bundling suricata-update
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
https://github.com/OISF/suricata-update/archive/master.tar.gz | \
|
||||||
|
tar zxvf - --strip-components=1
|
||||||
|
working-directory: suricata-update
|
||||||
|
- run: ./autogen.sh
|
||||||
|
- run: ./configure --enable-unittests
|
||||||
|
- run: make -j2
|
||||||
|
- run: make check
|
||||||
|
- name: Fetching suricata-verify
|
||||||
|
run: git clone https://github.com/OISF/suricata-verify.git
|
||||||
|
- name: Running suricata-verify
|
||||||
|
run: ./suricata-verify/run.py
|
||||||
|
|
||||||
|
debian-9:
|
||||||
|
name: Debian 9
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: debian:9
|
||||||
|
steps:
|
||||||
|
- run: |
|
||||||
|
apt update
|
||||||
|
apt -y install \
|
||||||
|
automake \
|
||||||
|
autoconf \
|
||||||
|
build-essential \
|
||||||
|
ccache \
|
||||||
|
curl \
|
||||||
|
git-core \
|
||||||
|
gosu \
|
||||||
|
jq \
|
||||||
|
libpcre3 \
|
||||||
|
libpcre3-dbg \
|
||||||
|
libpcre3-dev \
|
||||||
|
libpcap-dev \
|
||||||
|
libnet1-dev \
|
||||||
|
libyaml-0-2 \
|
||||||
|
libyaml-dev \
|
||||||
|
libcap-ng-dev \
|
||||||
|
libcap-ng0 \
|
||||||
|
libmagic-dev \
|
||||||
|
libjansson-dev \
|
||||||
|
libnss3-dev \
|
||||||
|
libgeoip-dev \
|
||||||
|
liblua5.1-dev \
|
||||||
|
libhiredis-dev \
|
||||||
|
libevent-dev \
|
||||||
|
libtool \
|
||||||
|
m4 \
|
||||||
|
make \
|
||||||
|
python-yaml \
|
||||||
|
pkg-config \
|
||||||
|
sudo \
|
||||||
|
zlib1g \
|
||||||
|
zlib1g-dev
|
||||||
|
- name: Install Rust
|
||||||
|
run: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.33.0 -y
|
||||||
|
- run: echo "::add-path::/github/home/.cargo/bin"
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Bundling libhtp
|
||||||
|
run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- name: Bundling suricata-update
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
https://github.com/OISF/suricata-update/archive/master.tar.gz | \
|
||||||
|
tar zxvf - --strip-components=1
|
||||||
|
working-directory: suricata-update
|
||||||
|
- run: ./autogen.sh
|
||||||
|
- run: ./configure --enable-unittests
|
||||||
|
- run: make -j2
|
||||||
|
- run: make check
|
||||||
|
- name: Fetching suricata-verify
|
||||||
|
run: git clone https://github.com/OISF/suricata-verify.git
|
||||||
|
- name: Running suricata-verify
|
||||||
|
run: ./suricata-verify/run.py
|
||||||
|
|
||||||
|
macos-latest:
|
||||||
|
name: MacOS Latest
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
# Cache Rust stuff.
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: cargo-registry
|
||||||
|
- run: |
|
||||||
|
brew install \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
curl \
|
||||||
|
hiredis \
|
||||||
|
jansson \
|
||||||
|
jq \
|
||||||
|
libmagic \
|
||||||
|
libnet \
|
||||||
|
libtool \
|
||||||
|
libyaml \
|
||||||
|
lua \
|
||||||
|
nss \
|
||||||
|
nspr \
|
||||||
|
pcre \
|
||||||
|
pkg-config \
|
||||||
|
rust \
|
||||||
|
xz
|
||||||
|
- run: pip install PyYAML
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
|
- run: ./autogen.sh
|
||||||
|
- run: ./configure --enable-unittests
|
||||||
|
- run: make -j2
|
||||||
|
- run: make check
|
||||||
|
- name: Fetching suricata-verify
|
||||||
|
run: git clone https://github.com/OISF/suricata-verify.git
|
||||||
|
- name: Running suricata-verify
|
||||||
|
run: ./suricata-verify/run.py
|
Loading…
Reference in New Issue