| |
| Variables |
| --------- |
| |
| The Travis 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 |
| ------- |
| |
| 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) |
| |
| TODO list |
| --------- |
| |
| * MacOS build |
| * Windows build |
| * clang-on-Linux build |
| * Use containers for non-Ubuntu-based Linux testing |
| |
| Known Failures |
| -------------- |
| |
| Some known failures: |
| |
| * "apt-get install" timeout/fails - workaround by moving apt install |
| to before_script phase? |
| |
| * 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 Travis, so this workflow is |
| available for those familiar with using Subversion and the standard |
| ASF/httpd repository layout. |
| |
| Tested branches are listed at: https://travis-ci.org/github/apache/httpd/branches |
| |
| Travis will also run the tests for a PR filed against the httpd Github |
| repository at https://github.com/apache/httpd or from a fork of this |
| repository if enabled for the Travis user. |
| |
| 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 enable testing for a fork, visit the settings page at |
| https://travis-ci.org/$USERNAME/httpd/settings - you may need to sync |
| your account via https://travis-ci.org/account/repositories for a |
| freshly created fork. |
| |
| To create a Pull Request, go to a URL like: |
| https://github.com/apache/httpd/compare/trunk...$USERNAME:trunk |
| |
| Once a PR has been created, travis will run the tests and link the |
| results from a PR comment. All tested PRs are listed here: |
| https://travis-ci.org/github/apache/httpd/pull_requests |
| |
| 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. |