---
language: python

sudo: required

services:
  - docker

install: true

branches:
  only:
    - master

# Stop default database instances here to avoid port conflicts.
before_script:
  - sudo service mysql stop
  - sudo service postgresql stop

# Clean the cache if any step fails.
before_cache:
  - scripts/ci fail-clean

cache:
  timeout: 1000
  directories:
    - $HOME/docker

stages:
  - build
  - test
  - database
  - clean

# We should label the steps if Travis ever supports it:
# https://github.com/travis-ci/travis-ci/issues/5898
jobs:
  include:
    - stage: build
      script: scripts/ci build

    - stage: test
      script: scripts/ci unit

    - stage: test
      script: scripts/ci registry

    - stage: test
      script: scripts/ci registry_old

    - stage: database
      script: scripts/ci mysql

    - stage: database
      script: scripts/ci postgres

    - stage: clean
      script: scripts/ci clean

notifications:
  slack:
    rooms:
      - secure: "fBR3YMXaOkoX2Iz7oSJVAw9zrcDoqwadiMEWTWhx7Ic0zoM8IieD2EWIcDHAoGpqf3ixHkc1v/iLBpbWHgvK7TkrSrGEbFyEmu/uomuHU8oGTiazWCbMWg9T2mhWYFyVaKtt8bzMbFo8k72kYK/NWV8bR4W/Qe/opkH2GGzfhZA="
    on_success: change
    on_failure: always
    on_pull_requests: false