| 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" |
| # This will need updating as the ubuntu-latest image changes: |
| PHP_FPM: "/usr/sbin/php-fpm8.1" |
| |
| 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 14 maintainer-mode w/-Werror, install + VPATH |
| config: --enable-mods-shared=reallyall --enable-maintainer-mode |
| notest-cflags: -Werror -O2 |
| env: | |
| CC=gcc-14 |
| 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" |
| # ------------------------------------------------------------------------- |
| - 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/" |
| # ------------------------------------------------------------------------- |
| - name: APR 1.7.x, APR-util 1.7.x, LDAP |
| config: --enable-mods-shared=reallyall |
| pkgs: ldap-utils |
| env: | |
| APR_VERSION=1.7.x |
| APU_VERSION=1.7.x |
| 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 |
| - name: Configured w/reduced exports |
| config: --enable-reduced-exports --enable-maintainer-mode --enable-systemd |
| pkgs: libsystemd-dev |
| env: | |
| SKIP_TESTING=1 |
| TEST_INSTALL=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" |
| # ------------------------------------------------------------------------- |
| - name: OpenSSL 3.1 |
| config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto |
| env: | |
| TEST_OPENSSL3=3.1.7 |
| APR_VERSION=1.7.4 |
| APU_VERSION=1.6.3 |
| APU_CONFIG="--without-crypto" |
| pkgs: subversion |
| # ------------------------------------------------------------------------- |
| - name: OpenSSL 3.2 -Werror |
| config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto |
| notest-cflags: -Werror -O2 -Wno-deprecated-declarations |
| env: | |
| TEST_OPENSSL3=3.2.2 |
| APR_VERSION=1.7.4 |
| APU_VERSION=1.6.3 |
| APU_CONFIG="--without-crypto" |
| pkgs: subversion |
| # ------------------------------------------------------------------------- |
| - name: OpenSSL 3.2 no-engine |
| config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto |
| env: | |
| TEST_OPENSSL3=3.2.2 |
| OPENSSL_CONFIG=no-engine |
| APR_VERSION=1.7.4 |
| APU_VERSION=1.6.3 |
| APU_CONFIG="--without-crypto" |
| pkgs: subversion |
| # ------------------------------------------------------------------------- |
| - name: OpenSSL 3.3 no-engine -Werror |
| config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto |
| notest-cflags: -Werror -O2 |
| env: | |
| TEST_OPENSSL3=3.3.2 |
| OPENSSL_CONFIG=no-engine |
| APR_VERSION=1.7.4 |
| APU_VERSION=1.6.3 |
| APU_CONFIG="--without-crypto" |
| pkgs: subversion |
| # ------------------------------------------------------------------------- |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| env: |
| NOTEST_CFLAGS: ${{ matrix.notest-cflags }} |
| CONFIG: ${{ matrix.config }} |
| name: ${{ matrix.name }} |
| steps: |
| # JOBID is used in the cache keys, created here as a hash of all |
| # properties of the environment, including the image OS version, |
| # compiler flags and any job-specific properties. |
| - name: Set environment variables |
| run: | |
| echo "${{ matrix.env }}" >> $GITHUB_ENV |
| echo JOBID=`echo "OS=$ImageOS ${{ matrix.notest-cflags }} ${{ matrix.env }} ${{ matrix.config }}" \ |
| | md5sum - | sed 's/ .*//'` >> $GITHUB_ENV |
| # https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917 |
| - name: Workaround ASAN issue in Ubuntu 22.04 |
| run: sudo sysctl vm.mmap_rnd_bits=28 |
| - 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 libsasl2-dev ${{ matrix.pkgs }} |
| - uses: actions/checkout@v4 |
| - name: Cache installed libraries |
| uses: actions/cache@v4 |
| with: |
| path: ~/root |
| key: cache-libs-${{ env.JOBID }} |
| - name: Cache CPAN modules |
| uses: actions/cache@v4 |
| with: |
| path: ~/perl5 |
| key: cache-cpan-${{ env.JOBID }} |
| - name: Configure environment |
| run: ./test/travis_before_linux.sh |
| timeout-minutes: 15 |
| - uses: actions/upload-artifact@v4 |
| if: failure() |
| with: |
| name: config.log-${{ env.JOBID }} |
| path: | |
| /home/runner/build/**/config.log |
| - name: Build and test |
| run: ./test/travis_run_linux.sh |
| - uses: actions/upload-artifact@v4 |
| if: failure() |
| with: |
| name: error_log-${{ env.JOBID }} |
| path: | |
| **/config.log |
| test/perl-framework/t/logs/error_log |