azure-pipelines.yml 3.2 KB

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