From 5dd14f2ee2812c74e96212cd6932a39fad1dfec1 Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Thu, 6 Aug 2015 12:26:02 -0600 Subject: [PATCH] Using gvm & shell test file to manage circleci go environment --- circle-test.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ circle.yml | 31 +++++++++-------------------- 2 files changed, 62 insertions(+), 22 deletions(-) create mode 100755 circle-test.sh diff --git a/circle-test.sh b/circle-test.sh new file mode 100755 index 000000000..91916c6de --- /dev/null +++ b/circle-test.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# This is the InfluxDB CircleCI test script. Using this script allows total control +# the environment in which the build and test is run, and matches the official +# build process for InfluxDB. + +BUILD_DIR=$HOME/telegraf-build +GO_VERSION=go1.4.2 + +# Executes the given statement, and exits if the command returns a non-zero code. +function exit_if_fail { + command=$@ + echo "Executing '$command'" + $command + rc=$? + if [ $rc -ne 0 ]; then + echo "'$command' returned $rc." + exit $rc + fi +} + +source $HOME/.gvm/scripts/gvm +exit_if_fail gvm use $GO_VERSION + +# Set up the build directory, and then GOPATH. +exit_if_fail mkdir $BUILD_DIR +export GOPATH=$BUILD_DIR +exit_if_fail mkdir -p $GOPATH/src/github.com/influxdb + +# Dump some test config to the log. +echo "Test configuration" +echo "========================================" +echo "\$HOME: $HOME" +echo "\$GOPATH: $GOPATH" +echo "\$CIRCLE_BRANCH: $CIRCLE_BRANCH" + +# Move the checked-out source to a better location. +exit_if_fail mv $HOME/telegraf $GOPATH/src/github.com/influxdb +exit_if_fail cd $GOPATH/src/github.com/influxdb/telegraf +exit_if_fail git branch --set-upstream-to=origin/$CIRCLE_BRANCH $CIRCLE_BRANCH + +# Install the code. +exit_if_fail cd $GOPATH/src/github.com/influxdb/telegraf +exit_if_fail go get -t -d -v ./... +exit_if_fail git checkout $CIRCLE_BRANCH # 'go get' switches to master. Who knew? Switch back. +exit_if_fail go build -v ./... + +# Run the tests. +exit_if_fail [ `git ls-files | grep '.go$' | xargs gofmt -l 2>&1 | wc -l` -eq 0 ] +exit_if_fail go tool vet --composites=false . +exit_if_fail make test-short + +exit $rc diff --git a/circle.yml b/circle.yml index 3b9888ffd..0ccd9f5f8 100644 --- a/circle.yml +++ b/circle.yml @@ -1,24 +1,11 @@ -dependencies: - post: - # install golint - - go get github.com/golang/lint/golint - # install binaries - - go install ./... +machine: + pre: + - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) + - source $HOME/.gvm/scripts/gvm; gvm install go1.4.2 --binary +dependencies: + override: + - echo "Dummy override, so no Circle dependencies execute" test: - pre: - # Vet go code for any potential errors - - go vet ./... - # Verify that all files are properly go formatted - - "[ `git ls-files | grep '.go$' | xargs gofmt -l 2>&1 | wc -l` -eq 0 ]" - # Only docker-compose up kafka, the other services are already running - # see: https://circleci.com/docs/environment#databases - # - docker-compose up -d kafka - override: - # Enforce that testutil, cmd, and main directory are fully linted - - golint . - - golint testutil/... - - golint cmd/... - # Run short unit tests - - make test-short - # TODO run full unit test suite + override: + - bash circle-test.sh