go_import_path: github.com/minio/minio

language: go

addons:
  apt:
    packages:
    - shellcheck

services:
  - docker

# this ensures PRs based on a local branch are not built twice
# the downside is that a PR targeting a different branch is not built
# but as a workaround you can add the branch to this list
branches:
  only:
    - master

matrix:
  include:
    - os: linux
      dist: trusty
      sudo: required
      env:
        - ARCH=x86_64
        - CGO_ENABLED=0
        - GO111MODULE=on
        - GOPROXY=https://proxy.golang.org
      # Enable build cache
      # https://restic.net/blog/2018-09-02/travis-build-cache
      cache:
       directories:
         - $HOME/.cache/go-build
         - $HOME/gopath/pkg/mod
         - $HOME/go/pkg/mod

      go: 1.12.5
      script:
        - make
        - diff -au <(gofmt -s -d cmd) <(printf "")
        - diff -au <(gofmt -s -d pkg) <(printf "")
        - for d in $(go list ./... | grep -v browser); do CGO_ENABLED=1 go test -v -race --timeout 15m "$d"; done
        - make verifiers
        - make crosscompile
        - make verify
        - make coverage
        - cd browser && yarn && yarn test && cd ..
        - bash -c 'shopt -s globstar; shellcheck mint/**/*.sh'

    - os: windows
      env:
        - ARCH=x86_64
        - CGO_ENABLED=0
        - GO111MODULE=on
        - GOPROXY=https://proxy.golang.org
      go: 1.12.5
      script:
        - go build --ldflags="$(go run buildscripts/gen-ldflags.go)" -o %GOPATH%\bin\minio.exe
        - bash buildscripts/go-coverage.sh

before_script:
  # Add an IPv6 config - see the corresponding Travis issue
  # https://github.com/travis-ci/travis-ci/issues/8361
  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'; fi

before_install:
 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then nvm install 11.10.1 ; fi

after_success:
- bash <(curl -s https://codecov.io/bash)
