language: go
go_import_path: github.com/coreos/etcd

sudo: required

services: docker

go:
- 1.10.4

notifications:
  on_success: never
  on_failure: never

env:
  matrix:
  - TARGET=linux-amd64-integration
  - TARGET=linux-amd64-functional
  - TARGET=linux-amd64-unit
  - TARGET=all-build
  - TARGET=linux-386-unit

matrix:
  fast_finish: true
  allow_failures:
  - go: 1.10.4
    env: TARGET=linux-386-unit
  exclude:
  - go: tip
    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:
- pushd cmd/etcd && go get -t -v ./... && popd

script:
 - echo "TRAVIS_GO_VERSION=${TRAVIS_GO_VERSION}"
 - >
    case "${TARGET}" in
      linux-amd64-integration)
        docker run --rm \
          --volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=amd64 PASSES='integration' ./test"
        ;;
      linux-amd64-functional)
        docker run --rm \
          --volume=`pwd`:/go/src/github.com/coreos/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/github.com/coreos/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/github.com/coreos/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-386-unit)
        docker run --rm \
          --volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
          /bin/bash -c "GOARCH=386 PASSES='unit' ./test"
        ;;
    esac
