[ci] use Alpine Linux VMs to test additional arch #5
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: On PRs | |
on: [push, pull_request] | |
concurrency: | |
group: ${{github.workflow}}-${{github.head_ref}} | |
cancel-in-progress: true | |
jobs: | |
Linux-ubuntu-gcc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: egor-tensin/setup-gcc@v1 | |
with: | |
version: '13' | |
- name: Install packages | |
run: | | |
python3 -m pip install meson ninja | |
- name: Compile and Test | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
Linux-ubuntu-clang: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: egor-tensin/setup-clang@v1 | |
with: | |
version: '17' | |
- name: Install packages | |
run: | | |
python3 -m pip install meson ninja | |
- name: Compile and Test | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
macOS: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install packages | |
run: | | |
brew install perl | |
python3 -m pip install meson ninja | |
- name: Compile and Test | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
DragonflyBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/dragonflybsd-vm@v1 | |
with: | |
prepare: | | |
pkg install -y ninja meson pkgconf pcre2 perl5 | |
run: | | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
FreeBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/freebsd-vm@v1 | |
with: | |
prepare: | | |
pkg install -y autoconf automake autotools libtool m4 pkgconf \ | |
ninja meson cmake scons-py39 pcre2 perl5 \ | |
gnutls libressl mbedtls nettle nss wolfssl \ | |
cyrus-sasl krb5 libdbi openldap26-client \ | |
mariadb1011-client postgresql16-client \ | |
brotli libdeflate zstd \ | |
libmaxminddb libunwind lua51 lua54 \ | |
e2fsprogs-libuuid libxml2 sqlite3 | |
run: | | |
set -e | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
NetBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/netbsd-vm@v1 | |
with: | |
prepare: | | |
pkg_add cmake pkgconf pcre2 perl | |
run: | | |
set -e | |
cmake -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release | |
cmake --build build --config Release | |
ctest -V --test-dir build --build-config Release | |
OpenBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/openbsd-vm@v1 | |
with: | |
prepare: | | |
pkg_add ninja meson pkgconf pcre2 perl5 | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
# # Solaris VM test is really slow compared to other VMs tests | |
# # (retrieving and installing packages is really slow) | |
# Solaris: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: vmactions/solaris-vm@v1 | |
# with: | |
# prepare: | | |
# pkgutil -y -i cmake gcc5core gmake pkgconfig perl libpcre2_dev | |
# run: | | |
# set -e | |
# # TODO: configure matrix with Sun Studio compiler | |
# cmake -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release | |
# cmake --build build --config Release | |
# # TODO: figure out why t/* tests are built but not found (not run) | |
# # TODO: figure out tests/* are not found (not run) | |
# # ctest --no-tests=error is also failing to fail/cause CI to fail | |
# ctest -V --test-dir build --build-config Release --no-tests=error | |
Windows-VisualStudio: | |
runs-on: windows-latest | |
name: Windows-VisualStudio-${{matrix.platform}} | |
strategy: | |
matrix: | |
platform: ['x64', 'win32'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: Compile and Test | |
run: | | |
cmake -G "Visual Studio 17 2022" -A "${{matrix.platform}}" -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release -DWITH_PCRE2=OFF -DWITH_PCRE=OFF -DWITH_ZLIB=OFF | |
cmake --build build --config Release | |
# run the compiled unit tests src/t/test_*; | |
# (skip the Perl test framework in tests/*) | |
# (note: tests/CMakeLists.txt also skips Perl tests/* on native WIN32) | |
ctest -V --test-dir build --build-config Release --no-tests=error -R '^test_' | |
Windows-MSYS2: | |
runs-on: windows-latest | |
name: Windows-MSYS2-${{matrix.platform}} | |
strategy: | |
matrix: | |
platform: ['mingw64', 'ucrt64', 'clang64'] | |
#platform: ['mingw32', 'mingw64', 'ucrt64', 'clang32', 'clang64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{matrix.platform}} | |
update: true | |
pacboy: >- | |
cc:p | |
cmake:p | |
pcre2:p | |
pkgconf:p | |
- name: Compile and Test | |
shell: msys2 {0} | |
run: | | |
set -e | |
# TODO: figure out why linking modules fails due to missing | |
# liblighttpd.dll.a (should be import lib created from lighttpd.exe) | |
# Build static lighttpd.exe with (at least) modules used by tests. | |
# List plugins used by tests/*.conf server.modules = (...) | |
touch "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_access)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_accesslog)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_auth)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_authn_file)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_cgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_deflate)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_expire)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_extforward)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_fastcgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_proxy)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_redirect)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_scgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_setenv)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_simple_vhost)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_staticfile)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_status)" >> "${{github.workspace}}/src/plugin-static.h" | |
cmake -G "Ninja" -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC=ON | |
cmake --build build --config Release | |
# run the compiled unit tests src/t/test_*; | |
# (skip the Perl test framework in tests/*) | |
# (note: tests/CMakeLists.txt also skips Perl tests/* on native WIN32) | |
ctest -V --test-dir build --build-config Release --no-tests=error -R '^test_' | |
Linux-alpine-x86_64: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jirutka/setup-alpine@v1 | |
with: | |
branch: latest-stable | |
arch: x86_64 | |
packages: > | |
build-base cmake meson ninja pkgconf perl scons | |
autoconf automake libtool m4 | |
gnutls-dev mbedtls-dev openssl-dev nettle-dev nss-dev wolfssl-dev | |
pcre2-dev brotli-dev libdeflate-dev zlib-dev zstd-dev | |
cyrus-sasl-dev krb5-dev libdbi-dev linux-pam-dev openldap-dev | |
mariadb-connector-c-dev postgresql16-dev | |
libmaxminddb-dev libunwind-dev lua5.1-dev lua5.4-dev | |
libxml2-dev ossp-uuid-dev sqlite-dev | |
zlib-static openssl-libs-static | |
- name: Compile and Test | |
run: | | |
set -e | |
# Alpine Linux wolfssl package built w/o features required by lighttpd | |
export NO_WOLFSSL=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
#('scons check_fullstatic' needs zlib-static openssl-libs-static) | |
shell: alpine.sh {0} | |
Linux-alpine: | |
runs-on: ubuntu-latest | |
name: Linux-alpine-${{matrix.platform}} | |
strategy: | |
matrix: | |
platform: ['x86','armhf','armv7','aarch64','ppc64le','riscv64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jirutka/setup-alpine@v1 | |
with: | |
# riscv64 currently requires 'edge' | |
branch: edge | |
arch: ${{matrix.platform}} | |
packages: > | |
build-base meson ninja perl pkgconf pcre2-dev zlib-dev | |
- name: Compile and Test | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
shell: alpine.sh {0} |