azure-pipelines.yml raw

   1  variables:
   2    GOPATH: '$(system.defaultWorkingDirectory)/work'
   3    sdkPath: '$(GOPATH)/src/github.com/$(build.repository.name)'
   4  
   5  jobs:
   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