1jobs: 2 - job: Build_Test 3 strategy: 4 matrix: 5 Linux_Go112: 6 vm.image: 'ubuntu-18.04' 7 go.version: '1.12' 8 GOROOT: '/usr/local/go$(go.version)' 9 Linux_Go113: 10 vm.image: 'ubuntu-18.04' 11 go.version: '1.13' 12 GOROOT: '/usr/local/go$(go.version)' 13 14 pool: 15 vmImage: $(vm.image) 16 17 variables: 18 GOPATH: '$(system.defaultWorkingDirectory)/work' 19 sdkPath: '$(GOPATH)/src/github.com/$(build.repository.name)' 20 IGNORE_BREAKING_CHANGES: true 21 22 steps: 23 - script: | 24 set -e 25 mkdir -p '$(GOPATH)/bin' 26 mkdir -p '$(sdkPath)' 27 shopt -s dotglob extglob 28 mv !(work) '$(sdkPath)' 29 echo '##vso[task.prependpath]$(GOROOT)/bin' 30 echo '##vso[task.prependpath]$(GOPATH)/bin' 31 displayName: 'Create Go Workspace' 32 - script: | 33 set -e 34 go version 35 curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh 36 dep ensure -v 37 go get -u golang.org/x/lint/golint 38 workingDirectory: '$(sdkPath)' 39 displayName: 'Install Dependencies' 40 - script: go vet $(go list ./... | grep -v vendor) 41 workingDirectory: '$(sdkPath)' 42 displayName: 'Vet' 43 - script: go build -v $(go list ./... | grep -v vendor) 44 workingDirectory: '$(sdkPath)' 45 displayName: 'Build' 46 - script: go test $(dirname $(find . -path ./vendor -prune -o -name '*_test.go' -print) | sort -u) 47 workingDirectory: '$(sdkPath)' 48 displayName: 'Run Tests' 49 - script: go run ./tools/apidiff/main.go packages ./services FETCH_HEAD~1 FETCH_HEAD --copyrepo --breakingchanges || $IGNORE_BREAKING_CHANGES 50 workingDirectory: '$(sdkPath)' 51 displayName: 'Display Breaking Changes' 52 - script: go run ./tools/pkgchk/main.go ./services --exceptions ./tools/pkgchk/exceptions.txt 53 workingDirectory: '$(sdkPath)' 54 displayName: 'Verify Package Directory' 55 - script: grep -L -r --include *.go --exclude-dir vendor -P "Copyright (\d{4}|\(c\)) Microsoft" ./ | tee >&2 56 workingDirectory: '$(sdkPath)' 57 displayName: 'Copyright Header Check' 58 failOnStderr: true 59 condition: succeededOrFailed() 60 - script: gofmt -s -l -w $(find . -path ./vendor -prune -o -name '*.go' -print) >&2 61 workingDirectory: '$(sdkPath)' 62 displayName: 'Format Check' 63 failOnStderr: true 64 condition: succeededOrFailed() 65 - script: | 66 golint ./storage/... >&2 67 golint ./tools/... >&2 68 workingDirectory: '$(sdkPath)' 69 displayName: 'Linter Check' 70 failOnStderr: true 71 condition: succeededOrFailed() 72