
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
  used, "*.x" means a branch, otherwise a tagged version is implied.

* APR_CONFIG - arguments to pass when running APR's configure script
  if APR_VERSION is set

* APU_VERSION - if set, APR-util of this version is built and
  installed in $HOME/root/apr-util-$APU_VERSION - a value of "*.x"
  means a branch, otherwise a tagged version is implied.  (Since there
  is no "trunk" for apr-util, that value cannot be used here.)

* APU_CONFIG - arguments to pass when running APR-util's configure
  script if APU_VERSION is set

* CONFIG - arguments to pass to httpd's configure script.

* BUILDCONFIG - arguments to pass when running httpd's ./buildconf script

* MFLAGS - arguments to pass when running "make" for httpd.

* SKIP_TESTING - if set, the Perl test framework is not run for the
  build.

* TEST_UBSAN - set for job using UBSan ("Undefined Behaviour Sanitizer")

* TEST_MALLOC - set for job using enhanced malloc debugging.

* TEST_INSTALL - set for job testing "make install"

* TEST_VPATH - set for job testing srcdir!=builddir 

* TEST_LDAP - set for job with slapd, running LDAP tests

* TEST_SSL - set for job with SSL/TLS testing variants

* TESTS - a list of Perl framework tests to run

* TEST_ARGS - arguments to pass to ./t/TEST in the Perl test framework

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

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

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

An SVN branch off trunk should be mirrored to github, and will be
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.

Test runs are listed at: https://github.com/apache/httpd/actions

A workflow to enable testing would be as follows, substituting
$USERNAME for your github username:

  $ git clone https://github.com/apache/httpd
  $ cd httpd
  $ git remote add $USERNAME git@github.com:$USERNAME/httpd.git
  $ git checkout -b my-feature origin/trunk
  ... do some work ...
  $ git commit ...
  $ git push -u $USERNAME my-feature:my-feature

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, the tests will run and test results
displayed directly in the PR.

To merge from github back to SVN trunk, create a patch from e.g.:

  $ git diff origin/trunk..my-feature

and then apply it in SVN.  To rebase a feature once trunk has
diverged, from a feature branch run:

  $ git pull
  $ git rebase -i origin/trunk

and follow the standard rebase steps.

An alternative way to apply a PR into an SVN checkout is to use the
apply_trunk_pr.sh script:
https://svn.apache.org/repos/asf/httpd/dev-tools/github/apply_trunk_pr.sh

If you use keywords in the SVN commit message, the PR will be closed
when the commit is mirrored to Github, e.g. a commit message like:

   mod_foo: Fix the baz feature.

   PR: 12345
   Submitted by: Jane Doe <jane example.com>
   Github: closes #1

will close PR #1 when it's merged.
