sudo: required
# Trusty distribution is much faster when sudo is required
dist: trusty

services:
  - docker

language: go
go:
  - 1.6

go_import_path: github.com/miekg/coredns

env:
  - ETCD_VERSION=2.3.1 K8S_VERSION=1.3.7 KUBECTL="docker exec hyperkube /hyperkube kubectl" DNS_ARGUMENTS=""

# In the Travis VM-based build environment, IPv6 networking is not
# enabled by default. The sysctl operations below enable IPv6.
# IPv6 is needed by some of the CoreDNS test cases. The VM environment
# is needed to have access to sudo in the test environment. Sudo is
# needed to have docker in the test environment. Docker is needed to
# launch a kubernetes instance in the test environment.
# (Dependencies are fun! :) )
before_install:
  - cat /proc/net/if_inet6
  - uname -a
  - sudo bash -c 'if [ `cat /proc/net/if_inet6 | wc -l` = "0" ]; then echo "Enabling IPv6" ; sysctl net.ipv6.conf.all.disable_ipv6=0 ; sysctl net.ipv6.conf.default.disable_ipv6=0 ; sysctl net.ipv6.conf.lo.disable_ipv6=0 ; fi'
  - cat /proc/net/if_inet6
  - env

before_script:
  - docker run -d --net=host --name=etcd quay.io/coreos/etcd:v$ETCD_VERSION
  - docker run -d --volume=/:/rootfs:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:rw --volume=/var/lib/kubelet/:/var/lib/kubelet:rw --volume=/var/run:/var/run:rw --volume=`pwd`/.travis:/travis --net=host --pid=host --privileged --name=hyperkube gcr.io/google_containers/hyperkube-amd64:v$K8S_VERSION /hyperkube kubelet --containerized --hostname-override=127.0.0.1 --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests $DNS_ARGUMENTS --allow-privileged --v=2
  # Wait until kubectl is ready
  - for i in {1..10}; do $KUBECTL version && break || sleep 5; done
  - $KUBECTL version
  - $KUBECTL config set-cluster test-doc --server=http://localhost:8080
  - $KUBECTL config set-context test-doc --cluster=test-doc
  - $KUBECTL config use-context test-doc
  # Wait until k8s is ready
  - for i in {1..30}; do $KUBECTL get nodes && break || sleep 5; done
  - $KUBECTL create -f /travis/kubernetes/dns-test.yaml
  - docker ps -a

script:
  - make coverage

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