language: go
go_import_path: go.etcd.io/etcd

sudo: required

services: docker

go:
- 1.12.12

notifications:
  on_success: never
  on_failure: never

env:
  matrix:
  - TARGET=linux-amd64-fmt
  - TARGET=linux-amd64-integration-1-cpu
  - TARGET=linux-amd64-integration-2-cpu
  - TARGET=linux-amd64-integration-4-cpu
  - TARGET=linux-amd64-functional
  - TARGET=linux-amd64-unit
  - TARGET=all-build
  - TARGET=linux-amd64-grpcproxy
  - TARGET=linux-386-unit

matrix:
  fast_finish: true
  allow_failures:
  - go: 1.12.12
    env: TARGET=linux-amd64-grpcproxy
  - go: 1.12.12
    env: TARGET=linux-386-unit

before_install:
- if [[ $TRAVIS_GO_VERSION == 1.* ]]; then docker pull gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION}; fi

install:
- go get -t -v -d ./...

script:
 - echo "TRAVIS_GO_VERSION=${TRAVIS_GO_VERSION}"
 - >
    case "${TARGET}" in
      linux-amd64-fmt)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 PASSES='fmt bom dep' ./test"
        ;;
      linux-amd64-integration-1-cpu)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 CPU=1 PASSES='integration' ./test"
        ;;
      linux-amd64-integration-2-cpu)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 CPU=2 PASSES='integration' ./test"
        ;;
      linux-amd64-integration-4-cpu)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 CPU=4 PASSES='integration' ./test"
        ;;
      linux-amd64-functional)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "./build && GOARCH=amd64 PASSES='functional' ./test"
        ;;
      linux-amd64-unit)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 PASSES='unit' ./test"
        ;;
      all-build)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 PASSES='build' ./test \
            && GOARCH=386 PASSES='build' ./test \
            && GO_BUILD_FLAGS='-v' GOOS=darwin GOARCH=amd64 ./build \
            && GO_BUILD_FLAGS='-v' GOOS=windows GOARCH=amd64 ./build \
            && GO_BUILD_FLAGS='-v' GOARCH=arm ./build \
            && GO_BUILD_FLAGS='-v' GOARCH=arm64 ./build \
            && GO_BUILD_FLAGS='-v' GOARCH=ppc64le ./build"
        ;;
      linux-amd64-grpcproxy)
        sudo HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build grpcproxy'" make docker-test
        ;;
      linux-386-unit)
        docker run --rm \
          --volume=`pwd`:/go/src/go.etcd.io/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=386 PASSES='unit' ./test"
        ;;
    esac
