dist: xenial language: python cache: directories: # we only bother to cache the wheels; parts of the http cache get # invalidated every build (because they get served with a max-age of 600 # seconds), which means that we end up re-uploading the whole cache for # every build, which is time-consuming In any case, it's not obvious that # downloading the cache from S3 would be much faster than downloading the # originals from pypi. # - $HOME/.cache/pip/wheels # don't clone the whole repo history, one commit will do git: depth: 1 # only build branches we care about (PRs are built seperately) branches: only: - master - develop - /^release-v/ - rav/pg95 # When running the tox environments that call Twisted Trial, we can pass the -j # flag to run the tests concurrently. We set this to 2 for CPU bound tests # (SQLite) and 4 for I/O bound tests (PostgreSQL). matrix: fast_finish: true include: - name: "pep8" python: 3.6 env: TOX_ENV="pep8,check_isort,packaging" - name: "py2.7 / sqlite" python: 2.7 env: TOX_ENV=py27,codecov TRIAL_FLAGS="-j 2" - name: "py2.7 / sqlite / olddeps" python: 2.7 env: TOX_ENV=py27-old TRIAL_FLAGS="-j 2" - name: "py2.7 / postgres9.5" python: 2.7 addons: postgresql: "9.5" env: TOX_ENV=py27-postgres,codecov TRIAL_FLAGS="-j 4" services: - postgresql - name: "py3.5 / sqlite" python: 3.5 env: TOX_ENV=py35,codecov TRIAL_FLAGS="-j 2" - name: "py3.7 / sqlite" python: 3.7 env: TOX_ENV=py37,codecov TRIAL_FLAGS="-j 2" - name: "py3.7 / postgres9.4" python: 3.7 addons: postgresql: "9.4" env: TOX_ENV=py37-postgres TRIAL_FLAGS="-j 4" services: - postgresql - name: "py3.7 / postgres9.5" python: 3.7 addons: postgresql: "9.5" env: TOX_ENV=py37-postgres,codecov TRIAL_FLAGS="-j 4" services: - postgresql - # we only need to check for the newsfragment if it's a PR build if: type = pull_request name: "check-newsfragment" python: 3.6 script: scripts-dev/check-newsfragment install: # this just logs the postgres version we will be testing against (if any) - psql -At -U postgres -c 'select version();' || true - pip install tox # if we don't have python3.6 in this environment, travis unhelpfully gives us # a `python3.6` on our path which does nothing but spit out a warning. Tox # tries to run it (even if we're not running a py36 env), so the build logs # then have warnings which look like errors. To reduce the noise, remove the # non-functional python3.6. - ( ! command -v python3.6 || python3.6 --version ) &>/dev/null || rm -f $(command -v python3.6) script: - tox -e $TOX_ENV