summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2023-03-02 09:58:30 +0000
committerJoe Orton <jorton@apache.org>2023-03-02 09:58:30 +0000
commit8ca0f13d751320e33afe20b20504f822abffeeb9 (patch)
tree098ffdb500c289a0eaf845fca7100dbae16b5f20
parent4c0c57ad58da2cff6628099d9f0c38f620621089 (diff)
downloadhttpd-8ca0f13d751320e33afe20b20504f822abffeeb9.tar.gz
Merge r1891497, r1906480, r1906482, r1906501, r1907235, r1907235, r1907236, r1907237, r1907506, r1907506, r1907670, r1907960 from trunk:
* Allow to load /home/travis/build/apache/httpd/.gdbinit Prep for GitHub actions: move CPAN handling into test scripts, don't reference /home/travis directly. Enable simplest CI test cases in GitHub Actions (currently also still enabled in Travis). Based on apr/trunk. Limit triggering on non-code changes, try to capture error_log as an artifact on failure. Migrate more tests to Github Actions. Github: fixes #340, fixes #339 Migrate more tests to Github Actions. Github: fixes #340, fixes #339 Travis RIP, WIP. Add todo list for GHA migration. Further migration of tests to GHA, though HTTP/2, ACME and i386 build testing are all failing so currently disabled. Caching needs adjusting to use a different model to Travis. Further migration of tests to GHA, though HTTP/2, ACME and i386 build testing are all failing so currently disabled. Caching needs adjusting to use a different model to Travis. Clear cache for mod_tls test. Also run CI for PRs against 2.4.x. Submitted by: rpluem, jorton git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1907961 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--.github/workflows/linux.yml303
-rw-r--r--.travis.yml492
-rw-r--r--test/README.ci (renamed from test/README.travis)74
-rwxr-xr-xtest/travis_before_linux.sh32
-rwxr-xr-xtest/travis_run_linux.sh4
5 files changed, 393 insertions, 512 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
new file mode 100644
index 0000000000..b4e52486d5
--- /dev/null
+++ b/.github/workflows/linux.yml
@@ -0,0 +1,303 @@
+name: Linux
+
+on:
+ push:
+ branches: [ "*" ]
+ paths-ignore:
+ - 'docs/**'
+ - STATUS
+ - CHANGES
+ - changes-entries/*
+ 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
+ # -------------------------------------------------------------------------
+ # 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.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/"
+ # -------------------------------------------------------------------------
+ ### 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
+ # -------------------------------------------------------------------------
+ ### 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.
+ - 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
+
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 64e42a2051..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,492 +0,0 @@
-language: c
-os:
- - linux
-dist: bionic
-cache:
- directories:
- - /home/travis/perl5
- - /home/travis/root
-# The non-x86_64 images currently lack cpanminus, when that is fixed
-# the cpanminus & universe sourceline can be removed.
-addons:
- apt:
- update: false
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - cpanminus
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- - ldap-utils
- - gdb
-env:
- global:
- - MFLAGS=-j2
-
-# This defines two condition anchors which can be used in job
-# definitions to either:
-# condition_24x_only => run the job only for 2.4.x
-# condition_not_24x => run the job everywhere EXCEPT 2.4.x
-_cond1: &condition_24x_only (branch is present AND (branch ~= /^2.4/ OR branch ~= /^candidate-2.4/)) OR (tag is present AND tag ~= /^2.4/)
-_cond2: &condition_not_24x (branch is not present OR (branch !~ /^2.4/ AND branch !~ /^candidate-2.4/)) AND (tag is not present OR tag !~ /^2.4/)
-
-jobs:
- include:
- - name: Linux Ubuntu, Default module set
- # -------------------------------------------------------------------------
- - name: Empty APLOGNO() test
- env: SKIP_TESTING=1 TEST_LOGNO=1
- # -------------------------------------------------------------------------
- - name: Linux s390x Ubuntu, all-modules
- arch: s390x
- env: CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - name: Linux ppc64le Ubuntu, all-modules
- arch: ppc64le
- env: CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - name: Linux arm64 Ubuntu, all-modules
- arch: arm64
- env: CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - if: *condition_not_24x
- name: Linux i386 Ubuntu, Shared MPMs, most modules, maintainer-mode w/-Werror
- env: CONFIG="--enable-mods-shared=reallyall --disable-xml2enc --disable-proxy-html --enable-mpms-shared=all --enable-maintainer-mode"
- 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"
- addons:
- apt:
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - 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
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Default, all-modules + install
- env: CONFIG="--enable-mods-shared=reallyall"
- TEST_INSTALL=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Default, all-static modules
- env: CONFIG="--enable-mods-static=reallyall"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Default, all-modules, random test order
- env: CONFIG="--enable-mods-shared=reallyall"
- TEST_ARGS="-order=random"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Prefork MPM, all-modules
- env: CONFIG="--enable-mods-shared=reallyall --with-mpm=prefork"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Worker MPM, all-modules
- env: CONFIG="--enable-mods-shared=reallyall --with-mpm=worker"
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Shared MPMs, all-modules
- env: CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, GCC 7 maintainer-mode w/-Werror, install + VPATH
- os: linux
- env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode"
- NOTEST_CFLAGS='-Werror -O2' CC=gcc-7
- TEST_VPATH=1 TEST_INSTALL=1 SKIP_TESTING=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Event MPM, all-modules, mod_cgid only
- env: CONFIG="--enable-mods-shared=reallyall --with-mpm=event --disable-cgi"
- # -------------------------------------------------------------------------
- - if: *condition_not_24x
- name: Linux Ubuntu, Event MPM, all-modules, mod_cgid fdpassing
- env: CONFIG="--enable-mods-shared=reallyall --with-mpm=event --disable-cgi --enable-cgid-fdpassing"
- # -------------------------------------------------------------------------
- - if: *condition_not_24x
- name: Linux Ubuntu, PCRE 1, GCC 7 maintainer-mode w/-Werror
- os: linux
- env: CONFIG="--enable-mods-shared=reallyall --with-pcre=/usr/bin/pcre-config --enable-maintainer-mode NOTEST_CFLAGS=-Werror CC=gcc-7"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, GCC 8 maintainer-mode w/-Werror
- env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-8
- SKIP_TESTING=1
- addons:
- apt:
- packages:
- - gcc-8
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, GCC 9 maintainer-mode w/-Werror
- env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-9
- SKIP_TESTING=1
- addons:
- apt:
- sources:
- - sourceline: 'ppa:ubuntu-toolchain-r/test'
- packages:
- - gcc-9
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, GCC 10 maintainer-mode w/-Werror
- env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-10
- SKIP_TESTING=1
- addons:
- apt:
- sources:
- - sourceline: 'ppa:ubuntu-toolchain-r/test'
- packages:
- - gcc-10
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- # -------------------------------------------------------------------------
- # MFLAGS= works around https://bz.apache.org/bugzilla/show_bug.cgi?id=63942
- - if: *condition_not_24x
- name: Linux Ubuntu, Regenerate ap_expr
- os: linux
- env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode NOTEST_CFLAGS=-Werror"
- BUILDCONFIG="--with-regen-expr"
- MFLAGS=
- # -------------------------------------------------------------------------
- - if: *condition_not_24x
- name: Linux Ubuntu, APR trunk
- env: APR_VERSION=trunk APR_CONFIG="--with-crypto"
- CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - if: *condition_24x_only
- name: Linux Ubuntu Xenial, all-modules, system APR/APR-util
- os: linux
- dist: xenial
- env: CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu Xenial, all-modules, APR 1.7.0, APR-util 1.6.1
- dist: xenial
- env: APR_VERSION=1.7.0 APU_VERSION=1.6.1
- CONFIG="--enable-mods-shared=reallyall"
- APU_CONFIG="--with-crypto --with-ldap"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu Focal, all-modules, system APR/APR-util
- os: linux
- dist: focal
- env: CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu Focal, all-modules, APR 1.7.0, APR-util 1.6.1
- dist: focal
- env: APR_VERSION=1.7.0 APU_VERSION=1.6.1
- CONFIG="--enable-mods-shared=reallyall"
- APU_CONFIG="--with-crypto --with-ldap"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, APR 1.7.0, APR-util 1.6.1
- env: APR_VERSION=1.7.0 APU_VERSION=1.6.1
- CONFIG="--enable-mods-shared=reallyall"
- APU_CONFIG="--with-crypto --with-ldap"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, APR 1.7.x, APR-util 1.7.x
- env: APR_VERSION=1.7.x APU_VERSION=1.7.x
- CONFIG="--enable-mods-shared=reallyall"
- APU_CONFIG="--with-crypto --with-ldap"
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, pool-debug
- env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug"
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall"
- TEST_MALLOC=1
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Shared MPMs (event), pool-debug, SSL/TLS variants
- env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug"
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=event"
- TEST_MALLOC=1 TEST_SSL=1
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Shared MPMs (worker), pool-debug, SSL/TLS variants
- env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug"
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=worker"
- TEST_MALLOC=1 TEST_SSL=1
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, Shared MPMs (prefork), pool-debug, SSL/TLS variants
- env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug"
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=prefork"
- TEST_MALLOC=1 TEST_SSL=1
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, APR trunk, minimal module set, OpenSSL 3.x
- if: *condition_not_24x
- env: APR_VERSION=trunk APR_CONFIG="--without-pgsql --without-mysql --without-odbc --with-crypto"
- CONFIG="--enable-mods-shared=ssl --with-mpm=event"
- TEST_SSL=1 TEST_OPENSSL3=3.0.7
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, APR trunk, minimal module set, OpenSSL 3.x -Werror
- if: *condition_not_24x
- env: APR_VERSION=trunk APR_CONFIG="--without-pgsql --without-mysql --without-odbc --with-crypto"
- CONFIG="--enable-mods-shared=ssl --with-mpm=event"
- TEST_OPENSSL3=3.0.7 SKIP_TESTING=1
- NOTEST_CFLAGS="-Werror -Wno-deprecated-declarations"
- # -------------------------------------------------------------------------
- - if: *condition_24x_only
- name: Linux Ubuntu, APR 1.7, minimal module set, OpenSSL 3.x
- env: APR_VERSION=1.7.0
- APU_VERSION=1.6.1 APU_CONFIG="--without-pgsql --without-mysql --without-odbc --with-crypto"
- CONFIG="--enable-mods-shared=ssl --with-mpm=event"
- TEST_SSL=1 TEST_OPENSSL3=3.0.7
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, MPMs [event, worker], core + HTTP/2 test suite
- dist: focal
- env: APR_VERSION=1.7.0
- APU_VERSION=1.6.1 APU_CONFIG="--with-crypto"
- CONFIG="--enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=all"
- NO_TEST_FRAMEWORK=1 TEST_INSTALL=1 TEST_H2=1 TEST_CORE=1
- addons:
- apt:
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - cpanminus
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- - ldap-utils
- - gdb
- - curl
- - python3-pytest
- - nghttp2-client
- - python3-cryptography
- - python3-requests
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, event MPM, ACME test suite
- dist: focal
- env: APR_VERSION=1.7.0
- APU_VERSION=1.6.1 APU_CONFIG="--with-crypto"
- CONFIG="--enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event"
- NO_TEST_FRAMEWORK=1 TEST_INSTALL=1 TEST_MD=1
- addons:
- apt:
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - cpanminus
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- - ldap-utils
- - gdb
- - curl
- - python3-pytest
- - nghttp2-client
- - python3-cryptography
- - python3-requests
- - golang-1.14
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, event MPM, MOD_TLS test suite
- dist: focal
- env: APR_VERSION=1.7.0
- APU_VERSION=1.6.1 APU_CONFIG="--with-crypto"
- CONFIG="--enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event"
- NO_TEST_FRAMEWORK=1 TEST_INSTALL=1 TEST_MOD_TLS=1
- addons:
- apt:
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - cpanminus
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - libldap2-dev
- - ldap-utils
- - gdb
- - curl
- - python3-pytest
- - nghttp2-client
- - python3-cryptography
- - python3-requests
- - cargo
- - cbindgen
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, APR 1.7.0, APR-util 1.6.1, LDAP
- env: APR_VERSION=1.7.0
- APU_VERSION=1.6.1 APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall"
- TEST_MALLOC=1 TEST_LDAP=1 TEST_ARGS="-defines LDAP"
- TESTS="t/modules/"
- # -------------------------------------------------------------------------
- - name: Linux Ubuntu, litmus WebDAV tests
- env: CONFIG="--enable-dav --enable-dav-fs"
- LITMUS=1 TESTS="t/modules/dav.t"
- addons:
- apt:
- update: false
- sources:
- - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe'
- packages:
- - cpanminus
- - libtool-bin
- - libapr1-dev
- - libaprutil1-dev
- - perl-doc
- - liblua5.3-dev
- - libbrotli-dev
- - libcurl4-openssl-dev
- - libsystemd-dev
- - libnghttp2-dev
- - libjansson-dev
- - libpcre2-dev
- - litmus
- # -------------------------------------------------------------------------
- - if: *condition_24x_only
- name: Linux Ubuntu, APR 1.5.1, APR-util 1.5.4
- env: APR_VERSION=1.5.1 APU_VERSION=1.5.4
- CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - if: *condition_24x_only
- name: Linux Ubuntu, APR 1.4.8, APR-util 1.4.2
- env: APR_VERSION=1.4.8 APU_VERSION=1.4.2
- CONFIG="--enable-mods-shared=reallyall"
- # -------------------------------------------------------------------------
- - if: *condition_not_24x
- name: Linux Ubuntu Focal, UBSan
- dist: focal
- env: NOTEST_CFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined" NOTEST_LIBS=-lubsan
- CONFIG="--enable-mods-shared=reallyall --disable-http2"
- TEST_UBSAN=1
- # -------------------------------------------------------------------------
- # LeakSanitizer segfaults some{how,times}..
- - name: Linux Ubuntu Focal, ASan
- dist: focal
- env: NOTEST_CFLAGS="-ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer"
- APR_VERSION=1.7.x
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall"
- TEST_ASAN=1 ASAN_OPTIONS="detect_leaks=0"
- CLEAR_CACHE=1
- # -------------------------------------------------------------------------
- # LeakSanitizer segfaults some{how,times}..
- - name: Linux Ubuntu Focal, ASan, pool-debug
- dist: focal
- env: NOTEST_CFLAGS="-ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer"
- APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug"
- APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap"
- CONFIG="--enable-mods-shared=reallyall"
- TEST_ASAN=1 ASAN_OPTIONS="detect_leaks=0"
- CLEAR_CACHE=1
- allow_failures:
- # Intermittent failures:
- - env: CONFIG="--enable-mods-shared=reallyall --with-mpm=worker"
- # Currently broken:
- - env: CONFIG="--enable-mods-shared=reallyall --with-mpm=event --disable-cgi --enable-cgid-fdpassing"
- # Non-x86 are sometimes flaky:
- - arch: s390x
- env: CONFIG="--enable-mods-shared=reallyall"
- - arch: arm64
- env: CONFIG="--enable-mods-shared=reallyall"
- - arch: ppc64le
- env: CONFIG="--enable-mods-shared=reallyall"
-
-# CPAN modules are to be used with the system Perl and always with
-# CC=gcc, e.g. for the CC="gcc -m32" case the builds are not correct
-# otherwise.
-before_install:
- - if [ "$TRAVIS_OS_NAME" = "linux" -a ! -v SKIP_TESTING ]; then
- if [ -v CLEAR_CACHE ]; then rm -rf ~/perl5; fi;
- cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib);
- CC=gcc cpanm --notest Net::SSL LWP::Protocol::https LWP::Protocol::AnyEvent::http ExtUtils::Embed Test::More AnyEvent DateTime HTTP::DAV Protocol::HTTP2::Client FCGI AnyEvent::WebSocket::Client Apache::Test;
- fi
-
-before_script:
- - ./test/travis_before_${TRAVIS_OS_NAME}.sh
-
-script:
- - ./test/travis_run_${TRAVIS_OS_NAME}.sh
-
-# Send notifications by default to IRC and dev@, for everything but
-# forks, otherwise any build from a fork will spam the list with CI
-# results.
-notifications:
- irc:
- if: fork = false
- channels:
- - "irc.libera.chat#httpd-dev"
- email:
- if: fork = false
- recipients:
- - dev@httpd.apache.org
diff --git a/test/README.travis b/test/README.ci
index 2806a5fafe..43600b00e6 100644
--- a/test/README.travis
+++ b/test/README.ci
@@ -2,7 +2,7 @@
Variables
---------
-The Travis scripts use the following environment variables:
+The CI scripts use the following environment variables:
* APR_VERSION - if set, APR of this version is built and installed in
$HOME/root/apr-$APR_VERSION - a value of "trunk" means trunk is
@@ -44,7 +44,9 @@ The Travis scripts use the following environment variables:
* TEST_ARGS - arguments to pass to ./t/TEST in the Perl test framework
-Caching
+* CLEAR_CACHE - if set, the cached $HOME/root is removed before each build
+
+Caching -- NOTE, BROKEN IN GITHUB ACTIONS --
-------
Perl modules installed in $HOME/perl5 are cached.
@@ -53,27 +55,72 @@ Anything installed into the $HOME/root directory is cached - notably,
versions of APR/APR-util are installed here and cached across httpd
build jobs without needing to be rebuilt every time.
+The cached installs of APR/APR-util are refreshed if the
+last-changed-revision of the build is stale.
+
+If APR_VERSION and APU_VERSION are both set to 1.x versions, then
+CLEAR_CACHE should also be set to disable APR* caching. APR-util can
+only be rebuilt if an APR checkout is present, so a APR-util cannot be
+built from source alone. (i.e. the scripts do not handle the case of
+cached, fresh APR plus a cached but stale APR-util)
+
+Travis to Github Actions Migration TODO
+---------------------------------------
+
+* better path filtering so e.g. CHANGES changes don't trigger CI
+* support branch conditionals again (some tests are 2.4.x only, some trunk only)
+* make caching work properly for APR + CPAN modules
+ - this is using the wrong model at the moment
+ - the cache key needs to be based off (source code, job configuration)
+ - rather than done on the fly in test/travis_before_linux.sh
+ - pebble + Rustls builds should also be cached
+* turn on failure notifications?
+* test across different Ubuntu versions again
+ - and test against OpenSSL 1.x since we're now ONLY building against 3.x
+* update the docs below for testing from PRs/feature branches
+* introduce some job ordering rather than having a flat/concurrent
+ set, if the default "./configure && make && test" works *then* start
+ jobs doing 200 different variations on ./configure --enable-XXX
+ i.e. stop burning CPU time for a typo which breaks every job
+
TODO list
---------
+* non-x86 builds
* MacOS build
* Windows build
* clang-on-Linux build
* Use containers for non-Ubuntu-based Linux testing
-* sanity checks for use of APLOGNO() - empty arguments, accidental duplicates, etc.
- - not sure how exactly
-* Known test failures
- - "apt-get install" timeout/fails - workaround by moving apt install to before_script phase?
-Testing from a Feature Branch
+Known Failures
+--------------
+
+Some known failures:
+
+* prefork, and more rarely non-prefork testing sometimes catches child
+ segfaults under pool-debug from assert()s in (e.g.)
+ __pthread_tpp_change_priority where one child is destroying threads
+ which another is waiting for, or iterating through via
+ apr_pool_walk_tree().
+
+ See dev@httpd threads:
+ msg <5f4abde1b5789_13fde2ecacb40795a1@travis-tasks-5b566d48fc-drkb9.mail>
+ msg <73060f7b-df7f-ad3c-a9fa-dd666a59b31e@kippdata.de> and
+ https://bz.apache.org/bugzilla/show_bug.cgi?id=63098
+ https://bz.apache.org/bugzilla/show_bug.cgi?id=46185
+
+ Not clear if there is a real bug here which can be reproduced
+ outside of pool-debug.
+
+Testing from a Feature Branch [*** N/A FOR GITHUB ACTIONS ***]
-----------------------------
An SVN branch off trunk should be mirrored to github, and will be
-tested in the same way that trunk is in Travis, so this workflow is
+tested in the same way that trunk is in CI, so this workflow is
available for those familiar with using Subversion and the standard
ASF/httpd repository layout.
-Tested branches are listed at: https://travis-ci.org/github/apache/httpd/branches
+Tested branches are listed at: https://travis-ci.com/github/apache/httpd/branches
Travis will also run the tests for a PR filed against the httpd Github
repository at https://github.com/apache/httpd or from a fork of this
@@ -91,16 +138,17 @@ $USERNAME for your github username:
$ git push -u $USERNAME my-feature:my-feature
To enable testing for a fork, visit the settings page at
-https://travis-ci.org/$USERNAME/httpd/settings - you may need to sync
-your account via https://travis-ci.org/account/repositories for a
+https://travis-ci.com/$USERNAME/httpd/settings - you may need to sync
+your account via https://travis-ci.com/account/repositories for a
freshly created fork.
-To create a Pull Request, go to a URL like:
+To create a Pull Request, go to the URL produced in the "git push"
+command output when pushing to your fork, which is something like:
https://github.com/apache/httpd/compare/trunk...$USERNAME:trunk
Once a PR has been created, travis will run the tests and link the
results from a PR comment. All tested PRs are listed here:
-https://travis-ci.org/github/apache/httpd/pull_requests
+https://travis-ci.com/github/apache/httpd/pull_requests
To merge from github back to SVN trunk, create a patch from e.g.:
diff --git a/test/travis_before_linux.sh b/test/travis_before_linux.sh
index 7f4f9b53b3..bc4d65942b 100755
--- a/test/travis_before_linux.sh
+++ b/test/travis_before_linux.sh
@@ -68,9 +68,9 @@ function install_apx() {
local revision=`svn info --show-item last-changed-revision ${url}`
- # Blow away the cached install root if the revision does not
- # match.
- test -f ${prefix}/.revision-is-${revision} || rm -rf ${prefix}
+ # Blow away the cached install root if the cached install is stale
+ # or doesn't match the expected configuration.
+ grep -q "${version} ${revision} ${config} CC=$CC" ${HOME}/root/.key-${name} || rm -rf ${prefix}
if test -d ${prefix}; then
return 0
@@ -84,13 +84,33 @@ function install_apx() {
make install
popd
- touch ${prefix}/.revision-is-${revision}
+ echo ${version} ${revision} "${config}" "CC=${CC}" > ${HOME}/root/.key-${name}
}
+# Allow to load $HOME/build/apache/httpd/.gdbinit
+echo "add-auto-load-safe-path $HOME/build/apache/httpd/.gdbinit" >> $HOME/.gdbinit
+# Prepare perl-framework test environment
if ! test -v SKIP_TESTING; then
- ### Temporary: purge old svn checkout from the cache
- rm -rf $HOME/root/framework
+ # Clear CPAN cache if necessary
+ if [ -v CLEAR_CACHE ]; then rm -rf ~/perl5; fi
+
+ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
+
+ pkgs="Net::SSL LWP::Protocol::https \
+ LWP::Protocol::AnyEvent::http ExtUtils::Embed Test::More \
+ AnyEvent DateTime HTTP::DAV FCGI \
+ AnyEvent::WebSocket::Client Apache::Test"
+
+ # CPAN modules are to be used with the system Perl and always with
+ # CC=gcc, e.g. for the CC="gcc -m32" case the builds are not correct
+ # otherwise.
+ CC=gcc cpanm --notest $pkgs
+
+ # Set cache key.
+ echo $pkgs > ~/perl5/.key
+ unset pkgs
+
# Make a shallow clone of httpd-tests git repo.
git clone --depth=1 https://github.com/apache/httpd-tests.git test/perl-framework
fi
diff --git a/test/travis_run_linux.sh b/test/travis_run_linux.sh
index fd13385e7c..5837070043 100755
--- a/test/travis_run_linux.sh
+++ b/test/travis_run_linux.sh
@@ -39,6 +39,9 @@ if test ! -v SKIP_TESTING; then
CONFIG="--with-test-suite=test/perl-framework $CONFIG"
WITH_TEST_SUITE=1
fi
+
+ # Use the CPAN environment.
+ eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
fi
if test -v APR_VERSION; then
CONFIG="$CONFIG --with-apr=$HOME/root/apr-${APR_VERSION}"
@@ -191,7 +194,6 @@ if ! test -v SKIP_TESTING; then
# Run ACME tests.
# need the go based pebble as ACME test server
# which is a package on debian sid, but not on focal
- export GOROOT=/usr/lib/go-1.14
export GOPATH=${PREFIX}/gocode
mkdir -p "${GOPATH}"
export PATH="${GOROOT}/bin:${GOPATH}/bin:${PATH}"