From 9c734e2e2ab7263bc431218fb96b455f721fbd69 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 13:41:00 +0800 Subject: [PATCH] Update configuration (#1481) * Modify config for modulization * Add more test in moduler pipeline * Move from go 1.12 to go 1.13 * Track 1 should remain go 1.12 * Changed to match new requirement * Combine pipelines --- .azure-pipelines/BuildTest.yml | 62 ++++++++++++++++++++------- .azure-pipelines/ModuleRelease.yml | 67 +++++++++++++++++++++++------- azure-pipelines.yml | 6 +-- 3 files changed, 99 insertions(+), 36 deletions(-) diff --git a/.azure-pipelines/BuildTest.yml b/.azure-pipelines/BuildTest.yml index 380410754330..2a4636a5af1a 100644 --- a/.azure-pipelines/BuildTest.yml +++ b/.azure-pipelines/BuildTest.yml @@ -3,35 +3,65 @@ jobs: strategy: matrix: Linux_Go112: - vm.image: 'Ubuntu 18.04' + vm.image: 'ubuntu-18.04' go.version: '1.12' GOROOT: '/usr/local/go$(go.version)' Linux_Go113: - vm.image: 'Ubuntu 18.04' + vm.image: 'ubuntu-18.04' go.version: '1.13' GOROOT: '/usr/local/go$(go.version)' pool: vmImage: $(vm.image) + variables: + GOPATH: '$(system.defaultWorkingDirectory)/work' + sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' + steps: - - template: steps/InitWorkspace.yml - - template: steps/Vet.yml - parameters: - folder: '.' - - template: steps/Build.yml - parameters: - folder: '.' + - 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: go vet $(go list ./... | grep -v vendor) + workingDirectory: '$(sdkPath)' + displayName: 'Vet' + - script: go build -v $(go list ./... | grep -v vendor) + workingDirectory: '$(sdkPath)' + displayName: 'Build' - script: go test $(dirname $(find . -path ./vendor -prune -o -name '*_test.go' -print) | sort -u) workingDirectory: '$(sdkPath)' displayName: 'Run Tests' - script: go run ./tools/pkgchk/main.go ./services --exceptions ./tools/pkgchk/exceptions.txt workingDirectory: '$(sdkPath)' displayName: 'Verify Package Directory' - - template: steps/CheckCopyrightHeader.yml - parameters: - folder: '.' - - template: steps/CheckFormat.yml - parameters: - folder: '.' - - template: steps/LinterCheck.yml + - 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: gofmt -s -l -w $(find . -path ./vendor -prune -o -name '*.go' -print) >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Format Check' + failOnStderr: true + condition: succeededOrFailed() + - script: | + golint ./storage/... >&2 + golint ./tools/... >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Linter Check' + failOnStderr: true + condition: succeededOrFailed() \ No newline at end of file diff --git a/.azure-pipelines/ModuleRelease.yml b/.azure-pipelines/ModuleRelease.yml index a1d38bfe2f10..541257b8b164 100644 --- a/.azure-pipelines/ModuleRelease.yml +++ b/.azure-pipelines/ModuleRelease.yml @@ -5,20 +5,57 @@ jobs: variables: GOROOT: '/usr/local/go1.12' + GOPATH: '$(system.defaultWorkingDirectory)/work' + sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' steps: - - template: steps/InitWorkspace.yml - - template: steps/SetGithub.yml - - template: steps/GenerateProfiles.yml - - template: steps/Vet.yml - parameters: - folder: './profiles' - - template: steps/CheckFormat.yml - parameters: - folder: './profiles' - - template: steps/CheckCopyrightHeader.yml - parameters: - folder: './profiles' + - script: | + # Enable bash verbose logging + set -x + 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 -x + 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: | + # Echo error if github-pat is empty + [ -z $(github-pat) ] && echo "github-pat is empty!" && exit -1 + echo $(Build.SourceBranchName) + # Enable bash verbose logging + set -x + git checkout $(Build.SourceBranchName) + git config user.email "azuresdkci@microsoft.com" + git config user.name "azuresdkci" + git config credential.helper store + echo https://$(github-pat):x-oauth-basic@github.com > ~/.git-credentials + displayName: 'Setup github' + workingDirectory: '$(sdkPath)' + - script: | + go generate ./profiles + gofmt -s -w ./profiles + workingDirectory: '$(sdkPath)' + displayName: 'Generate profiles' + - script: go vet $(go list ./profiles/... | grep -v vendor) + workingDirectory: '$(sdkPath)' + displayName: 'Vet in profiles' + - script: go build -v $(go list ./profiles/... | grep -v vendor) + workingDirectory: '$(sdkPath)' + displayName: 'Build' + - script: gofmt -s -l -w $(find ./profiles -path ./vendor -prune -o -name '*.go' -print) >&2 + workingDirectory: '$(sdkPath)' + displayName: 'Format Check' + failOnStderr: true + condition: succeededOrFailed() - script: | # test if there are new profiles if [ -z "$(git status --porcelain)" ]; then @@ -28,7 +65,7 @@ jobs: git push origin $(Build.SourceBranchName) fi workingDirectory: '$(sdkPath)' - displayName: 'Push Profiles' + displayName: 'Push profiles' - script: go run ./tools/moduler/main.go ./services -v - displayName: 'Run Moduler' - workingDirectory: '$(sdkPath)' + displayName: 'Detecting new tag and push' + workingDirectory: '$(sdkPath)' \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 71a8c470418c..e4ed5da37e6c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,16 +3,12 @@ trigger: include: - master -variables: - GOPATH: '$(System.DefaultWorkingDirectory)/work' - sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' - stages: - stage: Build_Test jobs: - template: .azure-pipelines/BuildTest.yml - stage: Module_Release - condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI')) + condition: in(variables['Build.Reason'], 'IndividualCI') jobs: - template: .azure-pipelines/ModuleRelease.yml \ No newline at end of file