Mailing List Archive

svn commit: r1907506 - in /httpd/httpd/trunk: .github/workflows/linux.yml .travis.yml test/README.ci test/travis_before_linux.sh test/travis_run_linux.sh
Author: jorton
Date: Tue Feb 7 16:15:05 2023
New Revision: 1907506

URL: http://svn.apache.org/viewvc?rev=1907506&view=rev
Log:
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.

Modified:
httpd/httpd/trunk/.github/workflows/linux.yml
httpd/httpd/trunk/.travis.yml
httpd/httpd/trunk/test/README.ci
httpd/httpd/trunk/test/travis_before_linux.sh
httpd/httpd/trunk/test/travis_run_linux.sh

Modified: httpd/httpd/trunk/.github/workflows/linux.yml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/.github/workflows/linux.yml?rev=1907506&r1=1907505&r2=1907506&view=diff
==============================================================================
--- httpd/httpd/trunk/.github/workflows/linux.yml (original)
+++ httpd/httpd/trunk/.github/workflows/linux.yml Tue Feb 7 16:15:05 2023
@@ -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

Modified: httpd/httpd/trunk/.travis.yml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/.travis.yml?rev=1907506&r1=1907505&r2=1907506&view=diff
==============================================================================
--- httpd/httpd/trunk/.travis.yml (original)
+++ httpd/httpd/trunk/.travis.yml Tue Feb 7 16:15:05 2023
@@ -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

Modified: httpd/httpd/trunk/test/README.ci
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/test/README.ci?rev=1907506&r1=1907505&r2=1907506&view=diff
==============================================================================
--- httpd/httpd/trunk/test/README.ci (original)
+++ httpd/httpd/trunk/test/README.ci Tue Feb 7 16:15:05 2023
@@ -46,7 +46,7 @@ The CI scripts use the following environ

* 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
---------

Modified: httpd/httpd/trunk/test/travis_before_linux.sh
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/test/travis_before_linux.sh?rev=1907506&r1=1907505&r2=1907506&view=diff
==============================================================================
--- httpd/httpd/trunk/test/travis_before_linux.sh (original)
+++ httpd/httpd/trunk/test/travis_before_linux.sh Tue Feb 7 16:15:05 2023
@@ -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

Modified: httpd/httpd/trunk/test/travis_run_linux.sh
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/test/travis_run_linux.sh?rev=1907506&r1=1907505&r2=1907506&view=diff
==============================================================================
--- httpd/httpd/trunk/test/travis_run_linux.sh (original)
+++ httpd/httpd/trunk/test/travis_run_linux.sh Tue Feb 7 16:15:05 2023
@@ -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}"