name: Linux on: push: branches: [ "*" ] paths-ignore: - 'docs/**' - STATUS - CHANGES - changes-entries/* tags: - 2.* pull_request: branches: [ "trunk", "2.4.x" ] paths-ignore: - 'docs/**' - STATUS - CHANGES - changes-entries/* env: MARGS: "-j2" CFLAGS: "-g" jobs: build: strategy: fail-fast: false matrix: include: # ------------------------------------------------------------------------- - name: Empty APLOGNO() test env: | SKIP_TESTING=1 TEST_LOGNO=1 # ------------------------------------------------------------------------- - 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 -Wno-deprecated-declarations env: | CC=gcc-10 TEST_VPATH=1 TEST_INSTALL=1 SKIP_TESTING=1 # ------------------------------------------------------------------------- - name: All-modules, APR 1.7.2, APR-util 1.6.3 config: --enable-mods-shared=reallyall env: | APR_VERSION=1.7.2 APU_VERSION=1.6.3 APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - name: APR 1.7.x, APR-util 1.7.x config: --enable-mods-shared=reallyall env: | APR_VERSION=1.7.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: APR 1.7.2, APR-util 1.6.3, LDAP config: --enable-mods-shared=reallyall pkgs: ldap-utils env: | APR_VERSION=1.7.2 APU_VERSION=1.6.3 APU_CONFIG="--with-crypto --with-ldap" TEST_MALLOC=1 TEST_LDAP=1 TEST_ARGS="-defines LDAP" TESTS="t/modules/" # ------------------------------------------------------------------------- - 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: 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 # ------------------------------------------------------------------------- ### TODO: if: *condition_not_24x ### TODO: fails in tests. # - 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 # env: | # APR_VERSION=1.7.2 # APU_VERSION=1.6.1 # 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.2 # APU_VERSION=1.6.1 # 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. ### TODO: make it pass (see e.g. https://github.com/apache/httpd/actions/runs/4467336705/jobs/7846666316) #- 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 cargo cbindgen # env: | # APR_VERSION=1.7.2 # APU_VERSION=1.6.1 # 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.1 # APU_CONFIG="--with-crypto --with-ldap" runs-on: ubuntu-latest env: NOTEST_CFLAGS: ${{ matrix.notest-cflags }} CONFIG: ${{ matrix.config }} name: ${{ matrix.name }} steps: - name: Set environment variables run: echo "${{ matrix.env }}" >> $GITHUB_ENV - name: apt refresh run: sudo apt-get -o Acquire::Retries=5 update - name: Install prerequisites run: sudo apt-get install -o Acquire::Retries=5 cpanminus libtool-bin libapr1-dev libaprutil1-dev liblua5.3-dev libbrotli-dev libcurl4-openssl-dev libnghttp2-dev libjansson-dev libpcre2-dev gdb perl-doc ${{ matrix.pkgs }} - uses: actions/checkout@v3 - name: Cache APR build uses: actions/cache@v3 env: cache-name: cache-apru with: path: ~/root key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('/home/runner/root/.key-*') }} - name: Cache CPAN modules uses: actions/cache@v3 env: cache-name: cache-cpan with: path: ~/perl5 key: ${{ runner.os }}-cpan-${{ env.cache-name }}-${{ hashFiles('/home/runner/perl5/.key') }} - 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: | /home/runner/build/**/config.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