sudo: false
services:
  - docker

language: cpp

# default values
os: linux
compiler: gcc

osx_image: xcode10.2

cache:
    directories:
      - $HOME/.cache

git:
    depth: 100500

env: >
    TEST_RUN_EXTRA_PARAMS="-j 1"

jobs:
    include:
      # Testing targets (just run tests on Debian Stretch or OS X).
      - name: "RelWithDebInfo build + test (Linux, gcc)"
        env: TARGET=test
      - name: "RelWithDebInfo build + test (Linux, clang)"
        env: TARGET=test
        compiler: clang
      - name: "RelWithDebInfo build + test (OS X Mojave 10.14)"
        env: TARGET=test
        os: osx
      - name: "Debug build + test + coverage (Linux, gcc)"
        env: TARGET=coverage
      # Deploy targets (they also catch distro-specific problems).
      - name: "Create and deploy tarball"
        env: TARGET=source
        if: branch = "master"
      - name: "CentOS 6 build + deploy RPM"
        env: OS=el DIST=6
        if: branch = "master"
      - name: "CentOS 7 build + test + deploy RPM"
        env: OS=el DIST=7
        if: branch = "master"
      - name: "Fedora 28 build + test + deploy RPM"
        env: OS=fedora DIST=28
        if: branch = "master"
      - name: "Fedora 29 build + test + deploy RPM"
        env: OS=fedora DIST=29
        if: branch = "master"
      - name: "Fedora 30 build + test + deploy RPM"
        env: OS=fedora DIST=30
        if: branch = "master"
      - name: "Ubuntu Trusty (14.04) build + deploy DEB"
        env: OS=ubuntu DIST=trusty
        if: branch = "master"
      - name: "Ubuntu Xenial (16.04) build + deploy DEB"
        env: OS=ubuntu DIST=xenial
        if: branch = "master"
      - name: "Ubuntu Bionic (18.04) build + deploy DEB"
        env: OS=ubuntu DIST=bionic
        if: branch = "master"
      - name: "Ubuntu Cosmic (18.10) build + deploy DEB"
        env: OS=ubuntu DIST=cosmic
        if: branch = "master"
      - name: "Ubuntu Disco (19.04) build + deploy DEB"
        env: OS=ubuntu DIST=disco
        if: branch = "master"
      - name: "Debian Jessie (8) build + deploy DEB"
        env: OS=debian DIST=jessie
        if: branch = "master"
      - name: "Debian Stretch (9) build + deploy DEB"
        env: OS=debian DIST=stretch
        if: branch = "master"
      - name: "Debian Buster (10) build + deploy DEB"
        env: OS=debian DIST=buster
        if: branch = "master"

script:
  - make -f .travis.mk ${TARGET}

before_deploy:
  - ls -l build/

deploy:
  # Deploy packages to PackageCloud from master branch (w/o tagged revisions)
  - provider: packagecloud
    username: "tarantool"
    repository: "2_3"
    token: "${PACKAGECLOUD_TOKEN}"
    dist: "${OS}/${DIST}"
    package_glob: build/*.{rpm,deb,dsc}
    skip_cleanup: true
    on:
      repo: tarantool/tarantool
      branch: "master"
      condition: -n "${OS}" && -n "${DIST}" && -n "${PACKAGECLOUD_TOKEN}"
  # Deploy source tarballs to S3 from master branch (w/o tagged revisions)
  - provider: script
    script: make -f .travis.mk source_deploy
    skip_cleanup: true
    on:
      repo: tarantool/tarantool
      branch: "master"
      condition: "x${TARGET} = xsource"
  # Deploy packages to PackageCloud from tagged revisions
  # https://github.com/travis-ci/travis-ci/issues/7780#issuecomment-302389370
  - provider: packagecloud
    username: "tarantool"
    repository: "2_3"
    token: "${PACKAGECLOUD_TOKEN}"
    dist: "${OS}/${DIST}"
    package_glob: build/*.{rpm,deb,dsc}
    skip_cleanup: true
    on:
      repo: tarantool/tarantool
      tags: true
      condition: -n "${OS}" && -n "${DIST}" && -n "${PACKAGECLOUD_TOKEN}"
  # Deploy source tarballs to S3 from tagged revisions
  # https://github.com/travis-ci/travis-ci/issues/7780#issuecomment-302389370
  - provider: script
    script: make -f .travis.mk source_deploy
    skip_cleanup: true
    on:
      repo: tarantool/tarantool
      tags: true
      condition: "x${TARGET} = xsource"

notifications:
  email:
    recipients:
      - build@tarantool.org
    on_success: change
    on_failure: always
