Merge pull request #44 from Castaglia/aws-sighup-issue41-adjustments #67
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
schedule: | |
- cron: '11 1 * * 0' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
CI: true | |
strategy: | |
matrix: | |
compiler: | |
- clang | |
- gcc | |
container: | |
- almalinux:8 | |
- alpine:3.14 | |
- ubuntu:18.04 | |
container: ${{ matrix.container }} | |
steps: | |
- name: Checkout ProFTPD | |
uses: actions/checkout@v2 | |
with: | |
repository: proftpd/proftpd | |
path: proftpd | |
- name: Checkout module source code | |
uses: actions/checkout@v2 | |
with: | |
path: proftpd/contrib/mod_aws | |
- name: Whitespace check | |
if: ${{ matrix.container == 'ubuntu:18.04' }} | |
run: | | |
apt-get update -qq | |
apt-get install -y git | |
cd proftpd/contrib/mod_aws | |
if [[ -n $(git diff --check HEAD^) ]]; then | |
echo "You must remove whitespace before submitting a pull request" | |
echo "" | |
git diff --check HEAD^ | |
exit 1 | |
fi | |
- name: Install Alpine packages | |
if: ${{ matrix.container == 'alpine:3.14' }} | |
run: | | |
apk update | |
# for builds | |
apk add bash build-base clang compiler-rt-static gcc make zlib-dev | |
# for unit tests | |
apk add check check-dev subunit subunit-dev | |
# for Curl support | |
apk add curl-dev | |
# for OpenSSL support | |
apk add openssl-dev | |
# for XML support | |
apk add libxml2-dev | |
# for debugging | |
clang --version | |
gcc --version | |
- name: Install RPM packages | |
if: ${{ matrix.container == 'almalinux:8' }} | |
run: | | |
# Need to add other repos for e.g. libsodium | |
yum install -y dnf-plugins-core epel-release clang gcc make zlib-devel | |
# for unit tests | |
yum install -y check-devel https://cbs.centos.org/kojifiles/packages/subunit/1.4.0/1.el8/x86_64/subunit-1.4.0-1.el8.x86_64.rpm https://cbs.centos.org/kojifiles/packages/subunit/1.4.0/1.el8/x86_64/subunit-devel-1.4.0-1.el8.x86_64.rpm | |
# for Curl support | |
yum install -y libcurl-devel | |
# for OpenSSL support | |
yum install -y openssl-devel | |
# for XML support | |
yum install -y libxml2-devel | |
# for debugging | |
clang --version | |
gcc --version | |
- name: Install Ubuntu packages | |
if: ${{ matrix.container == 'ubuntu:18.04' }} | |
run: | | |
apt-get update -qq | |
# for builds | |
apt-get install -y clang gcc make | |
# for unit tests | |
apt-get install -y check libsubunit-dev | |
# for Curl support | |
apt-get install -y libcurl4-openssl-dev | |
# for OpenSSL support | |
apt-get install -y libssl-dev | |
# for XML support | |
apt-get install -y libxml2-dev | |
# for integration/regression test | |
# for test code coverage | |
apt-get install -y lcov ruby | |
gem install coveralls-lcov | |
# for HTML validation | |
apt-get install -y tidy | |
# for debugging | |
clang --version | |
gcc --version | |
- name: Prepare code coverage | |
if: ${{ matrix.container == 'ubuntu:18.04' }} | |
run: | | |
lcov --directory proftpd --zerocounters | |
- name: Build as static module | |
env: | |
CC: ${{ matrix.compiler }} | |
run: | | |
cd proftpd | |
./configure LIBS="-lm -lsubunit -lrt -pthread" --enable-devel=coverage --enable-tests --with-includes=/usr/include/libxml2 --with-modules=mod_aws | |
make | |
- name: Run unit tests | |
env: | |
CC: ${{ matrix.compiler }} | |
# Note: Skip the unit tests on Alpine | |
if: ${{ matrix.container != 'alpine:3.14' }} | |
run: | | |
cd proftpd/contrib/mod_aws | |
make TEST_VERBOSE=1 check | |
- name: Upload code coverage | |
env: | |
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: ${{ matrix.compiler == 'gcc' && matrix.container == 'ubuntu:18.04' }} | |
run: | | |
cd proftpd/contrib/mod_aws | |
lcov --ignore-errors gcov,source --directory . --capture --output-file all.info | |
# filter out system and test code | |
lcov --output-file coverage.info --remove all.info '*/t/*' | |
# debug before upload | |
lcov --list coverage.info | |
# upload coverage info to coveralls | |
coveralls-lcov --repo-token="$COVERALLS_REPO_TOKEN" --service-name=github --service-job-id="$GITHUB_RUN_ID" --branch="$GITHUB_REF" coverage.info | |
- name: Install as static module | |
run: | | |
cd proftpd | |
make install | |
- name: Build as shared module | |
env: | |
CC: ${{ matrix.compiler }} | |
run: | | |
cd proftpd | |
make clean | |
./configure LIBS="-lm -lsubunit -lrt -pthread" --enable-devel --enable-dso --with-includes=/usr/include/libxml2 --with-shared=mod_aws | |
make | |
- name: Install as shared module | |
run: | | |
cd proftpd | |
make install | |
- name: Check HTML docs | |
if: ${{ matrix.container == 'ubuntu:18.04' }} | |
run: | | |
cd proftpd/contrib/mod_aws | |
for f in $(/bin/ls *.html); do echo "Processing $f"; tidy -errors -omit -q $f; done || exit 0 |