summary refs log blame commit diff
path: root/.travis.yml
blob: 0d0fa7082a5125545077d341621b8cd9e5e3e93e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
            
                
 








                                                                             
 


                                                        



                                                              
                  
              
 

                                                                               
       
                   
          

                                             
 
                          
                                                
 
                                    
                                            
 


                               
                                                         
                  
 
                          
                                                
 

                                                
 
                               
                       
                                                 

                  
                               
                       
                                                         

                  
                                                                   
                              
               
                                          
 
        
                                                                           
                                                       
 
                   
 




                                                                                                  

                   
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