1variables: 2 GOPATH: '$(system.defaultWorkingDirectory)/work' 3 sdkPath: '$(GOPATH)/src/github.com/$(build.repository.name)' 4 5jobs: 6 - job: 'goautorest' 7 displayName: 'Run go-autorest CI Checks' 8 9 strategy: 10 matrix: 11 Linux_Go113: 12 vm.image: 'ubuntu-18.04' 13 go.version: '1.13' 14 Linux_Go114: 15 vm.image: 'ubuntu-18.04' 16 go.version: '1.14' 17 18 pool: 19 vmImage: '$(vm.image)' 20 21 steps: 22 - task: GoTool@0 23 inputs: 24 version: '$(go.version)' 25 displayName: "Select Go Version" 26 27 - script: | 28 set -e 29 mkdir -p '$(GOPATH)/bin' 30 mkdir -p '$(sdkPath)' 31 shopt -s extglob 32 mv !(work) '$(sdkPath)' 33 echo '##vso[task.prependpath]$(GOPATH)/bin' 34 displayName: 'Create Go Workspace' 35 36 - script: | 37 set -e 38 curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh 39 dep ensure -v 40 go install ./vendor/golang.org/x/lint/golint 41 go get github.com/jstemmer/go-junit-report 42 go get github.com/axw/gocov/gocov 43 go get github.com/AlekSi/gocov-xml 44 go get -u github.com/matm/gocov-html 45 workingDirectory: '$(sdkPath)' 46 displayName: 'Install Dependencies' 47 48 - script: | 49 go vet ./autorest/... 50 go vet ./logger/... 51 go vet ./tracing/... 52 workingDirectory: '$(sdkPath)' 53 displayName: 'Vet' 54 55 - script: | 56 go build -v ./autorest/... 57 go build -v ./logger/... 58 go build -v ./tracing/... 59 workingDirectory: '$(sdkPath)' 60 displayName: 'Build' 61 62 - script: | 63 set -e 64 go test -race -v -coverprofile=coverage.txt -covermode atomic ./autorest/... ./logger/... ./tracing/... 2>&1 | go-junit-report > report.xml 65 gocov convert coverage.txt > coverage.json 66 gocov-xml < coverage.json > coverage.xml 67 gocov-html < coverage.json > coverage.html 68 workingDirectory: '$(sdkPath)' 69 displayName: 'Run Tests' 70 71 - script: grep -L -r --include *.go --exclude-dir vendor -P "Copyright (\d{4}|\(c\)) Microsoft" ./ | tee >&2 72 workingDirectory: '$(sdkPath)' 73 displayName: 'Copyright Header Check' 74 failOnStderr: true 75 condition: succeededOrFailed() 76 77 - script: | 78 gofmt -s -l -w ./autorest/. >&2 79 gofmt -s -l -w ./logger/. >&2 80 gofmt -s -l -w ./tracing/. >&2 81 workingDirectory: '$(sdkPath)' 82 displayName: 'Format Check' 83 failOnStderr: true 84 condition: succeededOrFailed() 85 86 - script: | 87 golint ./autorest/... >&2 88 golint ./logger/... >&2 89 golint ./tracing/... >&2 90 workingDirectory: '$(sdkPath)' 91 displayName: 'Linter Check' 92 failOnStderr: true 93 condition: succeededOrFailed() 94 95 - task: PublishTestResults@2 96 inputs: 97 testRunner: JUnit 98 testResultsFiles: $(sdkPath)/report.xml 99 failTaskOnFailedTests: true 100 101 - task: PublishCodeCoverageResults@1 102 inputs: 103 codeCoverageTool: Cobertura 104 summaryFileLocation: $(sdkPath)/coverage.xml 105 additionalCodeCoverageFiles: $(sdkPath)/coverage.html 106