diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8f6ec71e5a4..7403061d6f8 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -36,234 +36,6 @@ jobs: # ------------------------------------------------------------------------- - name: Default # ------------------------------------------------------------------------- - - name: All-static modules - config: --enable-mods-static=reallyall - # ------------------------------------------------------------------------- - - name: Prefork MPM, all-modules (except cgid) - config: --enable-mods-shared=reallyall --with-mpm=prefork --disable-cgid - # ------------------------------------------------------------------------- - - name: Worker MPM, all-modules - config: --enable-mods-shared=reallyall --with-mpm=worker - # ------------------------------------------------------------------------- - - name: Shared MPMs, all-modules - config: --enable-mods-shared=reallyall --enable-mpms-shared=all - # ------------------------------------------------------------------------- - - name: Event MPM, all-modules, mod_cgid only - config: --enable-mods-shared=reallyall --with-mpm=event --disable-cgi - # ------------------------------------------------------------------------- - - name: Event MPM, all-modules, no CMSG_DATA - config: --enable-mods-shared=reallyall --with-mpm=event ac_cv_have_decl_CMSG_DATA=no - # ------------------------------------------------------------------------- - - name: Default, all-modules + install - config: --enable-mods-shared=reallyall - env: | - TEST_INSTALL=1 - APACHE_TEST_EXTRA_ARGS=-v - # ------------------------------------------------------------------------- - - name: Default, all-modules, random test order - config: --enable-mods-shared=reallyall - env: | - TEST_ARGS=-order=random - # ------------------------------------------------------------------------- - - name: GCC 10 maintainer-mode w/-Werror, install + VPATH - config: --enable-mods-shared=reallyall --enable-maintainer-mode - notest-cflags: -Werror -O2 - env: | - CC=gcc-10 - TEST_VPATH=1 - TEST_INSTALL=1 - SKIP_TESTING=1 - # ------------------------------------------------------------------------- - - name: All-modules, APR 1.7.4, APR-util 1.6.3 - config: --enable-mods-shared=reallyall - env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 - APU_CONFIG="--with-crypto --with-ldap" - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: APR 1.8.x, APR-util 1.7.x - config: --enable-mods-shared=reallyall - env: | - APR_VERSION=1.8.x - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: Pool-debug - config: --enable-mods-shared=reallyall - env: | - APR_VERSION=1.7.x - APR_CONFIG="--enable-pool-debug" - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_MALLOC=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: Shared MPMs (event), pool-debug, SSL/TLS variants - config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=event - env: | - APR_VERSION=1.7.x - APR_CONFIG="--enable-pool-debug" - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_MALLOC=1 - TEST_SSL=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: Shared MPMs (worker), pool-debug, SSL/TLS variants - config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=worker - env: | - APR_VERSION=1.7.x - APR_CONFIG="--enable-pool-debug" - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_MALLOC=1 - TEST_SSL=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: Shared MPMs (prefork), pool-debug, SSL/TLS variants - config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=prefork - env: | - APR_VERSION=1.7.x - APR_CONFIG="--enable-pool-debug" - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_MALLOC=1 - TEST_SSL=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: litmus WebDAV tests - config: --enable-dav --enable-dav-fs - env: | - LITMUS=1 - TESTS="t/modules/dav.t" - pkgs: litmus - # ------------------------------------------------------------------------- - - name: litmus WebDAV tests, APR trunk, LMDB - config: --enable-dav --enable-dav-fs - pkgs: litmus liblmdb-dev - env: | - APR_VERSION=trunk - APR_CONFIG="--with-lmdb --with-dbm=lmdb" - LITMUS=1 - TESTS="t/modules/dav.t" - # ------------------------------------------------------------------------- - # MFLAGS= works around https://bz.apache.org/bugzilla/show_bug.cgi?id=63942 - ## TODO if: *condition_not_24x - - name: Regenerate ap_expr - config: --enable-mods-shared=reallyall --enable-maintainer-mode - notest-cflags: -Werror -Wno-deprecated-declarations - env: | - BUILDCONFIG="--with-regen-expr" - MFLAGS= - # ------------------------------------------------------------------------- - - name: APR 1.7.4, APR-util 1.6.3, LDAP - config: --enable-mods-shared=reallyall - pkgs: ldap-utils - env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 - APU_CONFIG="--with-crypto --with-ldap" - TEST_MALLOC=1 - TEST_LDAP=1 - TEST_ARGS="-defines LDAP" - TESTS="t/modules/" - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - ### TODO: if: *condition_not_24x - - name: APR trunk thread debugging - config: --enable-mods-shared=reallyall --with-mpm=event - env: | - APR_VERSION=trunk - APR_CONFIG="--with-crypto --enable-thread-debug" - # ------------------------------------------------------------------------- - - name: UBSan - notest-cflags: -fsanitize=undefined -fno-sanitize-recover=undefined - config: --enable-mods-shared=reallyall --disable-http2 - env: | - NOTEST_LIBS=-lubsan - TEST_UBSAN=1 - # ------------------------------------------------------------------------- - - name: ASan - notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer - config: --enable-mods-shared=reallyall - env: | - APR_VERSION=1.7.x - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_ASAN=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: ASan, pool-debug - notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer - config: --enable-mods-shared=reallyall - env: | - APR_VERSION=1.7.x - APR_CONFIG="--enable-pool-debug" - APU_VERSION=1.7.x - APU_CONFIG="--with-crypto --with-ldap" - TEST_ASAN=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - - name: HTTP/2 test suite - config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=all - pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets - env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 - APU_CONFIG="--with-crypto" - NO_TEST_FRAMEWORK=1 - TEST_INSTALL=1 - TEST_H2=1 - TEST_CORE=1 - TEST_PROXY=1 - # ------------------------------------------------------------------------- - ### TODO: if: *condition_not_24x - ### TODO: pebble install is broken. - # - name: ACME test suite - # config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event - # pkgs: >- - # python3-pytest nghttp2-client python3-cryptography python3-requests python3-filelock - # golang-1.17 curl - # env: | - # APR_VERSION=1.7.4 - # APU_VERSION=1.6.3 - # APU_CONFIG="--with-crypto" - # GOROOT=/usr/lib/go-1.17 - # NO_TEST_FRAMEWORK=1 - # TEST_INSTALL=1 - # TEST_MD=1 - # ------------------------------------------------------------------------- - ### TODO: if: *condition_not_24x - ### TODO: fix caching here. - - name: MOD_TLS test suite - config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event - pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets cargo cbindgen - env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 - APU_CONFIG="--with-crypto" - NO_TEST_FRAMEWORK=1 - TEST_INSTALL=1 - TEST_MOD_TLS=1 - CLEAR_CACHE=1 - # ------------------------------------------------------------------------- - ### TODO if: *condition_not_24x - ### TODO: Fails because :i386 packages are not being found. - # - name: i386 Shared MPMs, most modules, maintainer-mode w/-Werror - # config: --enable-mods-shared=reallyall --disable-xml2enc --disable-proxy-html --enable-mpms-shared=all --enable-maintainer-mode - # pkgs: >- - # cpanminus libc6-dev-i386 gcc-multilib libexpat1-dev:i386 libssl-dev:i386 - # lib32z1-dev libbrotli-dev:i386 libpcre2-dev:i386 libldap2-dev:i386 libtool-bin - # perl-doc libapr1-dev libbrotli-dev:i386 - # env: | - # PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" - # NOTEST_CFLAGS="-Werror" - # CC="gcc -m32" - # APR_VERSION=1.7.0 - # APU_VERSION=1.6.3 - # APU_CONFIG="--with-crypto --with-ldap" runs-on: ubuntu-latest timeout-minutes: 30 env: @@ -312,4 +84,49 @@ jobs: with: name: error_log ${{ matrix.node-version }} path: test/perl-framework/t/logs/error_log + containers: + strategy: + fail-fast: false + matrix: + container: ["quay.io/centos/centos:stream8", "quay.io/centos/centos:stream9", + "fedora:latest"] + container: + image: ${{ matrix.container }} + runs-on: ubuntu-latest + timeout-minutes: 30 + env: + NOTEST_CFLAGS: ${{ matrix.notest-cflags }} + CONFIG: ${{ matrix.config }} + steps: + - name: Set environment variables + run: echo "${{ matrix.env }}" >> $GITHUB_ENV + - name: Enable repositories + run: | + if test -f /etc/centos-release; then + dnf install -y yum-utils + dnf config-manager --set-enabled crb || dnf config-manager --set-enabled powertools + fi + - name: Install prerequisites + run: dnf install -y libtool apr-devel apr-util-devel lua-devel openssl-devel + jansson-devel brotli-devel libcurl-devel lua-devel + /usr/bin/cpanm libnghttp2-devel pcre2-devel gdb perl-doc + make autoconf glibc-devel gcc subversion git + - uses: actions/checkout@v3 + - name: Configure environment + run: ./test/travis_before_linux.sh + timeout-minutes: 15 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: config.log ${{ matrix.node-version }} + path: | + build/**/config.log + .cpanm/**/build.log + - name: Build and test + run: ./test/travis_run_linux.sh + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: error_log ${{ matrix.node-version }} + path: test/perl-framework/t/logs/error_log diff --git a/test/travis_before_linux.sh b/test/travis_before_linux.sh index bd468f5a702..7859793c3d5 100755 --- a/test/travis_before_linux.sh +++ b/test/travis_before_linux.sh @@ -1,5 +1,10 @@ #!/bin/bash -xe +if [ $EUID = 0 ]; then + useradd user + su - user -- $0 $* +fi + if test -v CLEAR_CACHE; then rm -rf $HOME/root fi @@ -11,16 +16,6 @@ fi cat /etc/hosts : -- ends -# ### FIXME: This is a workaround, non-x86 builds have an IPv6 -# configuration which somehow breaks the test suite runs. Appears -# that Apache::Test only configures the server to Listen on 0.0.0.0 -# (that is hard-coded), but then Apache::TestSerer::wait_till_is_up() -# tries to connect via ::1, which fails/times out. -if grep ip6-localhost /etc/hosts; then - sudo sed -i "/ip6-/d" /etc/hosts - cat /etc/hosts -fi - function install_apx() { local name=$1 local version=$2 diff --git a/test/travis_run_linux.sh b/test/travis_run_linux.sh index 1465a304bd8..59a1ca33459 100755 --- a/test/travis_run_linux.sh +++ b/test/travis_run_linux.sh @@ -1,5 +1,9 @@ #!/bin/bash -ex +if [ $EUID = 0 ]; then + su - user -- $0 $* +fi + # Test for APLOGNO() macro errors (duplicates, empty args) etc. For # trunk, run the updater script to see if it fails. If it succeeds # and changes any files (because there was a missing argument), the