language: go go: - 1.8.x os: - linux env: global: - PATH=$PATH:$GOPATH/bin - VERSION="${TRAVIS_TAG:-build-$TRAVIS_BUILD_ID}" - EXTRA_GO_FLAGS_TEST="-race" - MINIKUBE_WANTUPDATENOTIFICATION=false - MINIKUBE_WANTREPORTERRORPROMPT=false - MINIKUBE_HOME=${HOME} - CHANGE_MINIKUBE_NONE_USER=true # Frequent jsonnet_cgo crashes with xcode7.3 (default) osx_image: xcode8.3 matrix: include: - env: TARGET=x86_64-linux-musl EXTRA_GO_FLAGS_TEST="" go: 1.8.x - env: DO_INTEGRATION_TEST=1 INT_KVERS=v1.7.0 # cgo requires golang >= 1.8.1 (or other workarounds) on recent # osx/xcode - see https://github.com/golang/go/issues/19734 # 'go test' also hangs repeatably on go-1.8.3/MacOS ? - os: osx go: 1.8.x fast_finish: true allow_failures: # Let us know if/when 'go test' works again on MacOS.. - os: osx go: 1.8.x services: - docker addons: apt: packages: # Most of these are musl-cross dependencies - wget - patch - git-core - gcc - g++ - make - gawk - bzip2 - gzip - xz-utils - ca-certificates - libgmp-dev - libmpfr-dev - libmpc-dev before_install: - set -e - | if [ -n "$TARGET" -a ! -d "$HOME/cross/$TARGET/bin" ]; then pushd /tmp git clone --depth=1 https://github.com/GregorR/musl-cross.git cd musl-cross echo CC_BASE_PREFIX=$HOME/cross >> ./config.sh if ! ./build.sh > build.log; then tail -100 build.log exit 1 fi popd fi - | if [ -n "$TARGET" ]; then PATH=$PATH:$HOME/cross/$TARGET/bin export CC="$TARGET-gcc" export CXX="$TARGET-g++" export GO_LDFLAGS='-linkmode external -extldflags=-static' fi install: - go build -i -ldflags "$GO_LDFLAGS" . - | if [ "$DO_INTEGRATION_TEST" = 1 ]; then if ! which minikube; then wget -O minikube \ https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-$(go env GOOS)-$(go env GOARCH) install -m 755 minikube $GOPATH/bin/minikube fi if ! which kubectl; then wget https://storage.googleapis.com/kubernetes-release/release/$INT_KVERS/bin/$(go env GOOS)/$(go env GOARCH)/kubectl install -m 755 kubectl $GOPATH/bin/kubectl fi mkdir -p $HOME/.kube touch $HOME/.kube/config sudo -E $GOPATH/bin/minikube start --vm-driver=none \ --extra-config apiserver.Authorization.Mode=RBAC \ --kubernetes-version $INT_KVERS go get github.com/onsi/ginkgo/ginkgo fi script: - make VERSION="$VERSION" EXTRA_GO_FLAGS="$EXTRA_GO_FLAGS_TEST" test - make vet - rm -f ./ks && make VERSION="$VERSION" - > ldd ./ks || otool -L ./ks || : - ./ks help - ./ks version - | if [ "$DO_INTEGRATION_TEST" = 1 ]; then minikube update-context minikube status make VERSION="$VERSION" EXTRA_GO_FLAGS="$EXTRA_GO_FLAGS_TEST" integrationtest fi after_script: set +e before_deploy: - echo TARGET=$TARGET OS_NAME=$TRAVIS_OS_NAME GO_VERSION=$TRAVIS_GO_VERSION - EXE_NAME=ks-$(go env GOOS)-$(go env GOARCH) - cp ks $EXE_NAME - strip $EXE_NAME && ./$EXE_NAME version - > size $EXE_NAME || : deploy: api_key: secure: "T/LpWZSgeqWBgY3mUNeej55n8TbZZM7UgrHl7pej1CE2cs6YGcfyog3peiXvCcVF9NhGsm6eTXZQeFxsuWgMbWYeqlBnMkHNPPqdNpeRFgY0TkFZXHZLexfqTo2MLgrZiJ+bZl8wZnTTXukieGeLE37ugkBJyceLyfqIaxwRlpDzKPn8XtIqOMOwMq0aeUA8wjSSpuWkuwlGWKwJtI48BNExZZ1FRpPHQdAZjX6zEPT2SuRaACZdoX+3k/Fr91H6O9TplE4q5eCpEdd3y7BGGtMm3WA70SxYIZPGzfwaALGja5BapZr9Eui6ppyPGesQ8zV+zNtOsnK5Phj3QUj8M+v4BmJbxbPyhAIWmFiDlutgwZUkXI+R+SXONy1/LTuLLNSJ9WPQsC9gL09FGQmg+X0s7VpJVWxD8FScY0DJ4/bNLgeWnzwT2YTsduDktqevMpetxJWZGVQx3EN595JJKlZGtE8PouzVm7sRQEfe3Jd0XIcPfj5AV5trEBDjgHZSnU4qa9G9RdUZfswVp+R7SEwoTwEIEyOpFAwi9Qg5wkCAZFU2+86LQOLYH0Pm38//RxSXJEF1abkEb0Y/awz6KKlGBK3z1VSXvK3LQ8r9SwF2h15rD74O1mGM8Mjbs+mJXPxKpCq+BslskRYur3F8tRx45pwr8Ly9dppZd2rrswI=" file: $EXE_NAME on: condition: ( $TARGET = x86_64-linux-musl || $TRAVIS_OS_NAME = osx ) && ${TRAVIS_GO_VERSION}.0 =~ ^1\.8\. tags: true provider: releases skip_cleanup: true cache: directories: - $GOPATH/pkg - $HOME/cross branches: only: - master # release tags - /^v\d+\.\d+\.\d+.*$/ notifications: email: on_success: never