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 }}
- 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
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
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
* 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.
* 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
---------
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
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
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
# 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}"