diff options
-rw-r--r-- | .github/workflows/linux.yml | 70 | ||||
-rw-r--r-- | .travis.yml | 129 | ||||
-rw-r--r-- | test/README.ci | 13 | ||||
-rwxr-xr-x | test/travis_before_linux.sh | 24 | ||||
-rwxr-xr-x | test/travis_run_linux.sh | 1 |
5 files changed, 91 insertions, 146 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 26e111c65f..e5340e964a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -192,6 +192,65 @@ jobs: 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 + - 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 + # ------------------------------------------------------------------------- + ### 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 }} @@ -212,10 +271,17 @@ jobs: - name: Cache APR build uses: actions/cache@v3 env: - cache-name: cache-apr + cache-name: cache-apru with: path: ~/root - key: ${{runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('/home/runner/root/.key-apr') }} + 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 diff --git a/.travis.yml b/.travis.yml index ddaff5cb2f..5ccfacfca6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,33 +56,6 @@ jobs: 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 - # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- - if: *condition_not_24x @@ -191,108 +164,6 @@ jobs: CONFIG="--enable-mods-shared=ssl --with-mpm=event" TEST_SSL=1 TEST_OPENSSL3=3.0.7 # ------------------------------------------------------------------------- - - if: *condition_not_24x - name: Linux Ubuntu, MPMs [event, worker], core + proxy + 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 TEST_PROXY=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 - # ------------------------------------------------------------------------- - - if: *condition_not_24x - 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 - # ------------------------------------------------------------------------- - - if: *condition_not_24x - 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 - # ------------------------------------------------------------------------- - 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 diff --git a/test/README.ci b/test/README.ci index eb0b119a7f..43600b00e6 100644 --- a/test/README.ci +++ b/test/README.ci @@ -46,7 +46,7 @@ The CI scripts use the following environment variables: * CLEAR_CACHE - if set, the cached $HOME/root is removed before each build -Caching +Caching -- NOTE, BROKEN IN GITHUB ACTIONS -- ------- Perl modules installed in $HOME/perl5 are cached. @@ -69,12 +69,19 @@ 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 ~/root/apr* -* cache ~/perl5 as well +* 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 --------- diff --git a/test/travis_before_linux.sh b/test/travis_before_linux.sh index 0632d194a7..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,8 +84,7 @@ function install_apx() { make install popd - touch ${prefix}/.revision-is-${revision} - echo ${version} ${revision} ${config} > ${HOME}/root/.key-${name} + echo ${version} ${revision} "${config}" "CC=${CC}" > ${HOME}/root/.key-${name} } # Allow to load $HOME/build/apache/httpd/.gdbinit @@ -98,16 +97,19 @@ if ! test -v SKIP_TESTING; then 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 Net::SSL LWP::Protocol::https \ - LWP::Protocol::AnyEvent::http \ - ExtUtils::Embed Test::More AnyEvent DateTime HTTP::DAV FCGI \ - AnyEvent::WebSocket::Client Apache::Test + CC=gcc cpanm --notest $pkgs - ### Temporary: purge old svn checkout from the cache - rm -rf $HOME/root/framework + # 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 diff --git a/test/travis_run_linux.sh b/test/travis_run_linux.sh index 8aa1811b0b..7e4d855778 100755 --- a/test/travis_run_linux.sh +++ b/test/travis_run_linux.sh @@ -216,7 +216,6 @@ if ! test -v SKIP_TESTING; then # imports crypto/ed25519: unrecognized import path "crypto/ed25519" (import path does not begin with hostname) # # but works on a docker ubuntu-focal image. ??? - export GOROOT=/usr/lib/go-1.14 export GOPATH=${PREFIX}/gocode mkdir -p "${GOPATH}" export PATH="${GOROOT}/bin:${GOPATH}/bin:${PATH}" |