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
Jason Ish 5 years ago committed by Victor Julien
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…
Cancel
Save