From 6ed73afe6f4dd24946cef9f8154052b08c46c9ae Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 13:41:00 +0800 Subject: [PATCH 1/7] 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 | 65 +++++++++++++++++++++++------- azure-pipelines.yml | 6 +-- 3 files changed, 98 insertions(+), 35 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 c24d8479a945..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' + 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 From c66f57b0853de05454de4b905974004cc92a1a9f Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 13:42:03 +0800 Subject: [PATCH 2/7] Module releaser tool (#1480) * Ensures go.mod exists before doing actual work * Fix wrong module name * Add a new test scenario * Some refinement on testcases for versioner * Update version in version.go * Only keep one line of tag in version.go * Minor fix * No need to print tag to stdout * New test scenario * Fix linter problem * Return error from filepath.Abs * Add test for update version.go file * Remove method that ensures existence of go.mod file, and some redaudent test cases * Formatting code after versioning done * Refine tests * Fix a bug that when update applied to v2, the go.mod file does not update as v2 * Clean up * Purely file rename, nothing else changed * Add functionality for run tool in root folder * Add root command again * Fix format * Typo fix * Add test for list all stage folders * Add two functions for programmatically call * Fix CI failure * Add a new test case for more realistic * Fix errors in the new test case * Fix gofmt issues * Add a new struct to cover this scenario * Add test for go vet * Add new test case for one line import * Format stage folder first to avoid un-expected changes in code * Fix a bug in regex used for multiline import statement * Move getPkgs method to an internal package and exported * Fix broken tests * Add comment to silence golint error * Init command * Format change * More minor tweak to satisfy golint * Refine * Initial commit of tool moduler * Add copyright info in front of every new file * Add profile building * Fix CI failure * Fix dry-run * Do not need to update repo * Refine * Refine and add tests for moduler * Update tests * Remove profile related functionalities --- tools/moduler/cmd/root_test.go | 21 ----- tools/testdata/README.md | 8 +- .../scenariog/foo/mgmt/2019-10-11/foo/go.mod | 2 +- .../foo/mgmt/2019-10-11/foo/stage/go.mod | 2 +- .../scenarioh/foo/mgmt/2019-10-11/foo/go.mod | 2 +- .../foo/mgmt/2019-10-11/foo/stage/go.mod | 2 +- tools/versioner/cmd/root_test.go | 2 - tools/versioner/cmd/unstage.go | 25 ++--- tools/versioner/cmd/unstage_test.go | 92 ++----------------- 9 files changed, 19 insertions(+), 137 deletions(-) diff --git a/tools/moduler/cmd/root_test.go b/tools/moduler/cmd/root_test.go index 6e7b42967ce9..84deddae4398 100644 --- a/tools/moduler/cmd/root_test.go +++ b/tools/moduler/cmd/root_test.go @@ -41,21 +41,6 @@ var ( "tools/testdata/scenarioe/foo/v1.1.0", "tools/testdata/scenarioe/foo/v2.0.0", "tools/testdata/scenarioe/foo/v2.1.0", - "tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/v1.0.0", - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.0.0", - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.1.0", - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.2.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.0.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.0.1", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.1", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.2", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.0.0", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.0.1", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.0", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.1", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.2", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2.0.0", } ) @@ -100,9 +85,6 @@ func Test_findAllVersionFiles(t *testing.T) { "../../testdata/scenariog/foo/mgmt/2019-10-11/foo/v2/version.go", "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/version.go", "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2/version.go", - "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo/version.go", - "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/version.go", - "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2/version.go", } root, err := filepath.Abs("../../testdata") if err != nil { @@ -182,9 +164,6 @@ func Test_readNewTags(t *testing.T) { "tools/testdata/scenariof/foo/v1.0.0", "tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/v2.0.0", "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2.0.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.2", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.2", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2.0.0", } root, err := filepath.Abs("../../testdata") if err != nil { diff --git a/tools/testdata/README.md b/tools/testdata/README.md index 69cf4900d3a6..7f2ecab23088 100644 --- a/tools/testdata/README.md +++ b/tools/testdata/README.md @@ -8,10 +8,4 @@ | d | Yes | Yes | v1, v2 | Yes | | e | Yes | No | v1, v2 | Yes | | f | Yes | No | None | Yes | -| g | Yes | Yes | v1 | Yes | -| h | Yes | Yes | v1 | Yes | -| i | No | No | v1 | Yes | -| j | No | No | v1, v2 | Yes | - -* For i, all files in v1 and stage are identical with each other. In this case, no version should be bumped. -* For j, all files in v2 and stage are identical with each other. In this case, no version should be bumped. \ No newline at end of file +| g | Yes | Yes | v1 | Yes | \ No newline at end of file diff --git a/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/go.mod b/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/go.mod index 82d6f4eca2e2..9ded283f48b3 100644 --- a/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/go.mod +++ b/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/go.mod @@ -1,3 +1,3 @@ -module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo +module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo go 1.12 diff --git a/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/stage/go.mod b/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/stage/go.mod index 82d6f4eca2e2..9ded283f48b3 100644 --- a/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/stage/go.mod +++ b/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/stage/go.mod @@ -1,3 +1,3 @@ -module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo +module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo go 1.12 diff --git a/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/go.mod b/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/go.mod index a4f9958840c9..4f5aef0031ea 100644 --- a/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/go.mod +++ b/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/go.mod @@ -1,3 +1,3 @@ -module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo +module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo go 1.12 diff --git a/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage/go.mod b/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage/go.mod index a4f9958840c9..4f5aef0031ea 100644 --- a/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage/go.mod +++ b/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage/go.mod @@ -1,3 +1,3 @@ -module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo +module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo go 1.12 diff --git a/tools/versioner/cmd/root_test.go b/tools/versioner/cmd/root_test.go index f8d9b8cc9ea4..a524ad98c580 100644 --- a/tools/versioner/cmd/root_test.go +++ b/tools/versioner/cmd/root_test.go @@ -46,8 +46,6 @@ func Test_findAllSubDirectories(t *testing.T) { "../../testdata/scenariof/foo/stage", "../../testdata/scenariog/foo/mgmt/2019-10-11/foo/stage", "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage", - "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo/stage", - "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/stage", } root, err := filepath.Abs("../../testdata") if err != nil { diff --git a/tools/versioner/cmd/unstage.go b/tools/versioner/cmd/unstage.go index 233282570f07..43dc027e5e5e 100644 --- a/tools/versioner/cmd/unstage.go +++ b/tools/versioner/cmd/unstage.go @@ -101,6 +101,9 @@ func theUnstageCommand(args []string) (string, error) { if err != nil { return "", fmt.Errorf("failed to create module info: %v", err) } + if err := writeChangelog(stage, mod); err != nil { + return "", fmt.Errorf("failed to write changelog: %v", err) + } var tag string if mod.BreakingChanges() { tag, err = forSideBySideRelease(stage, mod) @@ -140,10 +143,6 @@ func forSideBySideRelease(stage string, mod modinfo.Provider) (string, error) { if err := updateVersion(stage, tag); err != nil { return "", fmt.Errorf("failed to update version.go: %v", err) } - // write change log - if err := writeChangelog(stage, mod); err != nil { - return "", fmt.Errorf("failed to write changelog: %v", err) - } // move staging to new LMV directory if err = os.Rename(stage, mod.DestDir()); err != nil { return "", fmt.Errorf("failed to rename '%s' to '%s': %v", stage, mod.DestDir(), err) @@ -181,14 +180,6 @@ func forInplaceUpdate(lmv, stage string, mod modinfo.Provider) (string, error) { if err := updateVersion(stage, tag); err != nil { return "", fmt.Errorf("failed to update version.go: %v", err) } - // write changelog - if hasChange, err := mod.HasChanges(); err != nil { - return "", fmt.Errorf("failed to check changes: %v", err) - } else if hasChange { - if err := writeChangelog(stage, mod); err != nil { - return "", fmt.Errorf("failed to write changelog: %v", err) - } - } // move staging directory over the LMV by first deleting LMV then renaming stage if modinfo.HasVersionSuffix(lmv) { if err := os.RemoveAll(lmv); err != nil { @@ -494,13 +485,9 @@ func calculateModuleTag(tags []string, mod modinfo.Provider) (string, error) { n := sv.IncMinor() sv = &n } else { - // no new exports and has changes, this is a patch update - if hasChange, err := mod.HasChanges(); err != nil { - return "", err - } else if hasChange { - n := sv.IncPatch() - sv = &n - } + // no new exports, this is a patch update + n := sv.IncPatch() + sv = &n } return strings.Replace(tag, v, "v"+sv.String(), 1), nil } diff --git a/tools/versioner/cmd/unstage_test.go b/tools/versioner/cmd/unstage_test.go index 6dcf1f170e9e..5a364001e073 100644 --- a/tools/versioner/cmd/unstage_test.go +++ b/tools/versioner/cmd/unstage_test.go @@ -137,11 +137,6 @@ func (mock mockModInfo) GenerateReport() report.Package { return report.Package{} } -func (mock mockModInfo) HasChanges() (bool, error) { - // not needed by tests - return true, nil -} - func Test_calculateModuleTagMajorV1(t *testing.T) { pkg := mockModInfo{ dir: filepath.Join("work", "src", "github.com", "Azure", "azure-sdk-for-go", "services", "foo"), @@ -583,11 +578,11 @@ func Test_theCommandNewMgmtMajorV2(t *testing.T) { cleanTestData() defer cleanTestData() getTagsHook = func(root string, prefix string) ([]string, error) { - if !strings.HasSuffix(prefix, "testdata/scenariog/foo/mgmt/2019-10-11/foo") { + if !strings.HasPrefix(prefix, "/testdata/scenariog/foo") { return nil, fmt.Errorf("bad prefix '%s'", prefix) } return []string{ - "tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/v1.0.0", + "/testdata/scenariog/foo/mgmt/2019-10-11/foo/v1.0.0", }, nil } stage, err := filepath.Abs("../../testdata/scenariog/foo/mgmt/2019-10-11/foo/stage") @@ -602,7 +597,7 @@ func Test_theCommandNewMgmtMajorV2(t *testing.T) { if tag != expectedTag { t.Fatalf("bad tag, expected '%s' got '%s'", expectedTag, tag) } - expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo/mgmt/2019-10-11/foo/v2\n\n%s\n", goVersion) + expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenariog/foo/v2\n\n%s\n", goVersion) verifyGoMod(t, "../../testdata/scenariog/foo/mgmt/2019-10-11/foo/v2", expectedMod) verifyVersion(t, "../../testdata/scenariog/foo/mgmt/2019-10-11/foo/v2", "2.0.0", tag) verifyChangelog(t, "../../testdata/scenariog/foo/mgmt/2019-10-11/foo/v2") @@ -614,13 +609,13 @@ func Test_theCommandNewMgmtMajorV2WithOneLineImport(t *testing.T) { cleanTestData() defer cleanTestData() getTagsHook = func(root string, prefix string) ([]string, error) { - if !strings.HasSuffix(prefix, "testdata/scenarioh/foo/mgmt/2019-10-11/foo") { + if !strings.HasPrefix(prefix, "/testdata/scenarioh/foo") { return nil, fmt.Errorf("bad prefix '%s'", prefix) } return []string{ - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.0.0", - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.1.0", - "tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.2.0", + "/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.0.0", + "/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.1.0", + "/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v1.2.0", }, nil } stage, err := filepath.Abs("../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/stage") @@ -635,80 +630,9 @@ func Test_theCommandNewMgmtMajorV2WithOneLineImport(t *testing.T) { if tag != expectedTag { t.Fatalf("bad tag, expected '%s' got '%s'", expectedTag, tag) } - expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2\n\n%s\n", goVersion) + expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioh/foo/v2\n\n%s\n", goVersion) verifyGoMod(t, "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2", expectedMod) verifyVersion(t, "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2", "2.0.0", tag) verifyChangelog(t, "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo/v2") verifyGoVet(t, "../../testdata/scenarioh/foo/mgmt/2019-10-11/foo") } - -// scenarioi -func Test_theCommandNoAnyChange(t *testing.T) { - cleanTestData() - defer cleanTestData() - getTagsHook = func(root string, prefix string) ([]string, error) { - if !strings.HasSuffix(prefix, "testdata/scenarioi/foo/mgmt/2019-10-23/foo") { - return nil, fmt.Errorf("bad prefix '%s'", prefix) - } - return []string{ - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.0.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.0.1", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.0", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.1", - "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.2", - }, nil - } - stage, err := filepath.Abs("../../testdata/scenarioi/foo/mgmt/2019-10-23/foo/stage") - if err != nil { - t.Fatalf("failed: %v", err) - } - tag, err := theUnstageCommand([]string{stage}) - if err != nil { - t.Fatalf("failed: %v", err) - } - const expectedTag = "tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo/v1.1.2" - if tag != expectedTag { - t.Fatalf("bad tag, expected '%s' got '%s'", expectedTag, tag) - } - expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioi/foo/mgmt/2019-10-23/foo\n\n%s\n", goVersion) - verifyGoMod(t, "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo", expectedMod) - verifyVersion(t, "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo", "1.1.2", tag) - verifyNoChangelog(t, "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo") - verifyGoVet(t, "../../testdata/scenarioi/foo/mgmt/2019-10-23/foo") -} - -// scenarioj -func Test_theCommandNoAnyChangeV2(t *testing.T) { - cleanTestData() - defer cleanTestData() - getTagsHook = func(root string, prefix string) ([]string, error) { - if !strings.HasSuffix(prefix, "testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2") { - return nil, fmt.Errorf("bad prefix '%s'", prefix) - } - return []string{ - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.0.0", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.0.1", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.0", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.1", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v1.1.2", - "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2.0.0", - }, nil - } - stage, err := filepath.Abs("../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/stage") - if err != nil { - t.Fatalf("failed: %v", err) - } - tag, err := theUnstageCommand([]string{stage}) - if err != nil { - t.Fatalf("failed: %v", err) - } - const expectedTag = "tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2.0.0" - if tag != expectedTag { - t.Fatalf("bad tag, expected '%s' got '%s'", expectedTag, tag) - } - expectedMod := fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/tools/testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2\n\n%s\n", goVersion) - verifyGoMod(t, "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2", expectedMod) - verifyVersion(t, "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2", "2.0.0", tag) - verifyNoChangelog(t, "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2") - verifyGoVet(t, "../../testdata/scenarioj/foo/mgmt/2019-10-23/foo/v2") -} From f1eb5c6b66433db1ef6be8ceb49a6e61e22de224 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 16:26:19 +0800 Subject: [PATCH 3/7] Modulize (#1482) --- services/cognitiveservices/v3.0/luis/runtime/version.go | 2 +- .../preview/cognitiveservices/v3.0/luis/runtime/CHANGELOG.md | 1 + services/preview/cognitiveservices/v3.0/luis/runtime/go.mod | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 services/preview/cognitiveservices/v3.0/luis/runtime/CHANGELOG.md create mode 100644 services/preview/cognitiveservices/v3.0/luis/runtime/go.mod diff --git a/services/cognitiveservices/v3.0/luis/runtime/version.go b/services/cognitiveservices/v3.0/luis/runtime/version.go index 119db5d07cce..cf2314ceeb77 100644 --- a/services/cognitiveservices/v3.0/luis/runtime/version.go +++ b/services/cognitiveservices/v3.0/luis/runtime/version.go @@ -27,4 +27,4 @@ func Version() string { return "1.0.0" } -// tag: services/cognitiveservices/v3.0/luis/runtime/v1.0.0 +// tag: services/preview/cognitiveservices/v3.0/luis/runtime/v1.0.0 diff --git a/services/preview/cognitiveservices/v3.0/luis/runtime/CHANGELOG.md b/services/preview/cognitiveservices/v3.0/luis/runtime/CHANGELOG.md new file mode 100644 index 000000000000..4b553421a78a --- /dev/null +++ b/services/preview/cognitiveservices/v3.0/luis/runtime/CHANGELOG.md @@ -0,0 +1 @@ +No changes to exported content compared to the previous release. diff --git a/services/preview/cognitiveservices/v3.0/luis/runtime/go.mod b/services/preview/cognitiveservices/v3.0/luis/runtime/go.mod new file mode 100644 index 000000000000..6e89c1e364bc --- /dev/null +++ b/services/preview/cognitiveservices/v3.0/luis/runtime/go.mod @@ -0,0 +1,3 @@ +module github.com/Azure/azure-sdk-for-go/services/preview/cognitiveservices/v3.0/luis/runtime + +go 1.12 From 48d0a72f04562821e089af40f23d5f3fd0d3fa19 Mon Sep 17 00:00:00 2001 From: arcturusZhang Date: Tue, 22 Oct 2019 14:45:07 +0800 Subject: [PATCH 4/7] CHange pipelines --- .azure-pipelines/BuildTest.yml | 9 +++++---- .azure-pipelines/ModuleRelease.yml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.azure-pipelines/BuildTest.yml b/.azure-pipelines/BuildTest.yml index 2a4636a5af1a..fbf034a8c0b1 100644 --- a/.azure-pipelines/BuildTest.yml +++ b/.azure-pipelines/BuildTest.yml @@ -3,11 +3,11 @@ jobs: strategy: matrix: Linux_Go112: - vm.image: 'ubuntu-18.04' + vm.image: 'Ubuntu 16.04' go.version: '1.12' GOROOT: '/usr/local/go$(go.version)' Linux_Go113: - vm.image: 'ubuntu-18.04' + vm.image: 'Ubuntu 16.04' go.version: '1.13' GOROOT: '/usr/local/go$(go.version)' @@ -15,12 +15,13 @@ jobs: vmImage: $(vm.image) variables: - GOPATH: '$(system.defaultWorkingDirectory)/work' + GOPATH: '$(System.DefaultWorkingDirectory)/work' sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' steps: - script: | - set -e + set -x + printenv mkdir -p '$(GOPATH)/bin' mkdir -p '$(sdkPath)' shopt -s dotglob extglob diff --git a/.azure-pipelines/ModuleRelease.yml b/.azure-pipelines/ModuleRelease.yml index 541257b8b164..f03f231d5821 100644 --- a/.azure-pipelines/ModuleRelease.yml +++ b/.azure-pipelines/ModuleRelease.yml @@ -1,7 +1,7 @@ jobs: - job: pool: - vmImage: 'Ubuntu 18.04' + vmImage: 'Ubuntu 16.04' variables: GOROOT: '/usr/local/go1.12' From bf84c5b2e89a9bebe429fdb80bef2aed473e8ac0 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Tue, 22 Oct 2019 15:10:12 +0800 Subject: [PATCH 5/7] Update azure-pipelines.yml --- azure-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e4ed5da37e6c..a5d740abb453 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,6 +9,6 @@ stages: - template: .azure-pipelines/BuildTest.yml - stage: Module_Release - condition: in(variables['Build.Reason'], 'IndividualCI') + condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI')) jobs: - - template: .azure-pipelines/ModuleRelease.yml \ No newline at end of file + - template: .azure-pipelines/ModuleRelease.yml From e8fae3fb59e475589fee343fd4ab57ef28a2dd8c Mon Sep 17 00:00:00 2001 From: Arcturus Date: Fri, 18 Oct 2019 17:07:06 +0800 Subject: [PATCH 6/7] Update configuration (#1469) * 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 --- azure-pipelines.yml | 77 +++++++++++++++++++++++++++++------ moduler-pipelines.yml | 95 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+), 12 deletions(-) create mode 100644 moduler-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a5d740abb453..e63506d2df7c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,14 +1,67 @@ -trigger: - branches: - include: - - master +jobs: + - job: Build_Test + strategy: + matrix: + Linux_Go112: + vm.image: 'ubuntu-18.04' + go.version: '1.12' + GOROOT: '/usr/local/go$(go.version)' + Linux_Go113: + vm.image: 'ubuntu-18.04' + go.version: '1.13' + GOROOT: '/usr/local/go$(go.version)' -stages: - - stage: Build_Test - jobs: - - template: .azure-pipelines/BuildTest.yml + pool: + vmImage: $(vm.image) - - stage: Module_Release - condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI')) - jobs: - - template: .azure-pipelines/ModuleRelease.yml + variables: + GOPATH: '$(system.defaultWorkingDirectory)/work' + sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' + + steps: + - 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' + - 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/moduler-pipelines.yml b/moduler-pipelines.yml new file mode 100644 index 000000000000..d08f1803cbc8 --- /dev/null +++ b/moduler-pipelines.yml @@ -0,0 +1,95 @@ +pool: + vmImage: 'Ubuntu 18.04' + +variables: + GOROOT: '/usr/local/go1.12' + GOPATH: '$(system.defaultWorkingDirectory)/work' + sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' + +trigger: + batch: true + branches: + include: + - master + +pr: none + +steps: + - 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 ./... | 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' + - 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() + - script: | + # test if there are new profiles + if [ -z "$(git status --porcelain)" ]; then + echo no new profiles generated. + else + git commit -a -m "regenerated profiles" + git push origin $(Build.SourceBranchName) + fi + workingDirectory: '$(sdkPath)' + displayName: 'Push profiles' + - script: go run ./tools/moduler/main.go ./services -v + displayName: 'Detecting new tag and push' + workingDirectory: '$(sdkPath)' From 9104364673684d0607d82ccf994da5d6016bb784 Mon Sep 17 00:00:00 2001 From: SDK Automation Date: Fri, 25 Oct 2019 10:03:55 +0000 Subject: [PATCH 7/7] Generated from a71df15a587ec060147aaef2dcfc12d19500fdc8 Fix json format by prettier --- services/compute/mgmt/2017-03-30/compute/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 services/compute/mgmt/2017-03-30/compute/CHANGELOG.md diff --git a/services/compute/mgmt/2017-03-30/compute/CHANGELOG.md b/services/compute/mgmt/2017-03-30/compute/CHANGELOG.md deleted file mode 100644 index 4b553421a78a..000000000000 --- a/services/compute/mgmt/2017-03-30/compute/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -No changes to exported content compared to the previous release.