File: azure-pipelines.yml

package info (click to toggle)
golang-github-azure-azure-sdk-for-go 68.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 556,256 kB
  • sloc: javascript: 196; sh: 96; makefile: 7
file content (130 lines) | stat: -rw-r--r-- 4,119 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# This builds only track 1 SDKs. See eng\pipelines\templates\steps\build.yml for track 2.

trigger:
  paths:
    exclude:
    - sdk/
    - eng/tools/
    - eng/config.json

pr:
  paths:
    exclude:
    - sdk/
    - eng/tools/
    - eng/config.json

jobs:
  - job: Build_Test
    strategy:
      matrix:
        Linux_Go117:
          pool.name: azsdk-pool-mms-ubuntu-2004-general
          go.version: '1.17.8'
        Linux_Go118:
          pool.name: azsdk-pool-mms-ubuntu-2004-general
          go.version: '1.18.2'

    pool:
      name: $(pool.name)

    variables:
      - template: /eng/pipelines/templates/variables/globals.yml
      - name: GOPATH
        value: '$(system.defaultWorkingDirectory)/work'
      - name: sdkPath
        value: '$(GOPATH)/src/github.com/$(build.repository.name)'
      - name: GO111MODULE
        value: 'off'
      - name: IGNORE_BREAKING_CHANGES
        value: 'true'
      - name: go.list.filter
        value: 'profiles services storage'
      - name: go.test.filter
        value: '-path ./vendor -prune -o -path ./sdk -prune -o -path ./eng -prune -o'

    steps:
    - task: GoTool@0
      inputs:
        version: '$(go.version)'
      displayName: "Select Go Version"

    - script: |
        set -e
        mkdir -p '$(GOPATH)/bin'
        mkdir -p '$(sdkPath)'
        shopt -s dotglob extglob
        mv !(work) '$(sdkPath)'
        echo '##vso[task.prependpath]$(GOROOT)/bin'
        echo '##vso[task.prependpath]$(GOPATH)/bin'
      displayName: 'Create Go Workspace'

    - script: |
        set -e
        go version
        curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
        dep ensure -v
        go get -u golang.org/x/lint/golint
      workingDirectory: '$(sdkPath)'
      displayName: 'Install Dependencies'

    - script: |
        for dd in $(go.list.filter); do
          cd $(sdkPath)/$dd
          go vet -v ./...
        done
      workingDirectory: '$(sdkPath)'
      displayName: 'Vet'

    - script: |
        for dd in $(go.list.filter); do
          cd $(sdkPath)/$dd
          go build -v ./...
        done
      workingDirectory: '$(sdkPath)'
      displayName: 'Build'

    - script: go test $(dirname $(find . $(go.test.filter) -name '*_test.go' -print) | sort -u)
      workingDirectory: '$(sdkPath)'
      displayName: 'Run Tests'

    - template: /eng/common/pipelines/templates/steps/verify-links.yml
      parameters:
        ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
          Urls: ($(sdkPath)/eng/common/scripts/get-markdown-files-from-changed-files.ps1)
        ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
          Urls: $(Get-ChildItem -Path '$(sdkPath)/*.md' -Recurse | Where {$_.FullName -notlike "*/vendor/*" -and $_.FullName -notlike "*/sdk/*"})
        Directory: ''
        ScriptDirectory: '$(sdkPath)/eng/common/scripts'
        WorkingDirectory: '$(sdkPath)'

    - script: go run ./eng/tools/apidiff/main.go packages ./services FETCH_HEAD~1 FETCH_HEAD --copyrepo --breakingchanges || $IGNORE_BREAKING_CHANGES
      workingDirectory: '$(sdkPath)'
      displayName: 'Display Breaking Changes'

    - script: go run ./eng/tools/pkgchk/main.go ./services --exceptions ./eng/tools/pkgchk/exceptions.txt
      workingDirectory: '$(sdkPath)'
      displayName: 'Verify Package Directory'

    - script: grep -L -r --include *.go --exclude-dir vendor -P "Copyright (\d{4}|\(c\)) Microsoft" ./ | tee >&2
      workingDirectory: '$(sdkPath)'
      displayName: 'Copyright Header Check'
      failOnStderr: true
      condition: succeededOrFailed()

    - script: |
        for dd in $(go.list.filter); do
          cd $(sdkPath)/$dd
          gofmt -s -l -d $(find . -name '*.go' -print) >&2
        done
      workingDirectory: '$(sdkPath)'
      displayName: 'Format Check'
      failOnStderr: true
      condition: and(succeededOrFailed(), startsWith(variables['go.version'], '1.16'))

    - script: |
        golint ./storage/... >&2
      workingDirectory: '$(sdkPath)'
      displayName: 'Linter Check'
      failOnStderr: true
      condition: succeededOrFailed()