You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jo...@apache.org on 2023/02/07 16:15:06 UTC

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}"