diff --git a/.azuredevops/azure-pipelines.yml b/.azuredevops/azure-pipelines.yml new file mode 100644 index 0000000..d913933 --- /dev/null +++ b/.azuredevops/azure-pipelines.yml @@ -0,0 +1,82 @@ +pool: + vmImage: 'ubuntu-latest' + +variables: + - name: goVersion + value: 1.23.0 + - name: GOPATH + value: '$(system.defaultWorkingDirectory)/gopath' + +stages: + - stage: Build + jobs: + - job: GoBuildTest + displayName: Run build and tests + steps: + - task: GoTool@0 + displayName: Install Go $(goVersion) + inputs: + version: $(goVersion) + + - bash: | + set -e + go env -w GOMODCACHE="$(pwd)/.gomodcache" + displayName: Configure GOMODCACHE + + - bash: | + set -e + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 + go install github.com/envoyproxy/protoc-gen-validate@v1.1.0 + go install github.com/bufbuild/buf/cmd/buf@v1.45.0 + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0 + condition: succeeded() + displayName: Install build dependencies + + - bash: | + set -e + echo on + go mod download + go mod tidy + go get ./... + condition: succeeded() + displayName: Download dependencies + + - bash: | + set -e + echo on + rm -rf gen/ + export PATH="$PATH:$GOPATH/bin" + buf format proto -w + cd proto + buf lint + buf generate + cd - + condition: succeeded() + displayName: Regenerate code from schema + + - bash: | + set -e + echo on + export PATH="$PATH:$GOPATH/bin" + go fmt ./... && go vet ./... && golangci-lint run + condition: succeeded() + displayName: Format and lint + + - bash: | + set -e + echo on + git diff HEAD --name-only --exit-code + condition: succeeded() + displayName: Check local changes after code generation and formatting + + - bash: go build ./... + condition: succeeded() + displayName: Build + + - bash: go test ./... + condition: succeeded() + displayName: Run tests + + - bash: sudo rm -rf .gomodcache + condition: always() + displayName: Clean up the local cache (.gomodcache)