From cd11dd9aff83e29829ca54556a6d15d53d9caa57 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 13:41:00 +0800 Subject: [PATCH 1/9] 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 69d6a0935f2467860343989ba174e7c5d17bd117 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 13:42:03 +0800 Subject: [PATCH 2/9] 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 150f063445cd53af85e815f05bfb4a0099c79c61 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 16:26:19 +0800 Subject: [PATCH 3/9] 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 6a98455f6bbe41e858d4a465112d07e72d49eb10 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 17:22:51 +0800 Subject: [PATCH 4/9] Update ModuleRelease.yml --- .azure-pipelines/ModuleRelease.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/ModuleRelease.yml b/.azure-pipelines/ModuleRelease.yml index 541257b8b164..cfbb4d7f6f4f 100644 --- a/.azure-pipelines/ModuleRelease.yml +++ b/.azure-pipelines/ModuleRelease.yml @@ -5,7 +5,7 @@ jobs: variables: GOROOT: '/usr/local/go1.12' - GOPATH: '$(system.defaultWorkingDirectory)/work' + GOPATH: '/work' sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' steps: @@ -68,4 +68,4 @@ jobs: displayName: 'Push profiles' - script: go run ./tools/moduler/main.go ./services -v displayName: 'Detecting new tag and push' - workingDirectory: '$(sdkPath)' \ No newline at end of file + workingDirectory: '$(sdkPath)' From 5946ded575716f45617db8cf0f749dad738e1d88 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 20:28:09 +0800 Subject: [PATCH 5/9] Update ModuleRelease.yml --- .azure-pipelines/ModuleRelease.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/ModuleRelease.yml b/.azure-pipelines/ModuleRelease.yml index cfbb4d7f6f4f..2a2dca3d2306 100644 --- a/.azure-pipelines/ModuleRelease.yml +++ b/.azure-pipelines/ModuleRelease.yml @@ -5,7 +5,7 @@ jobs: variables: GOROOT: '/usr/local/go1.12' - GOPATH: '/work' + GOPATH: '$(System.DefaultWorkingDirectory)/work' sdkPath: '$(GOPATH)/src/github.com/Azure/azure-sdk-for-go' steps: From 98b3e58bc4edbe735bbc0f50dcfa5a9d6686d903 Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 20:44:03 +0800 Subject: [PATCH 6/9] Update ModuleRelease.yml --- .azure-pipelines/ModuleRelease.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azure-pipelines/ModuleRelease.yml b/.azure-pipelines/ModuleRelease.yml index 2a2dca3d2306..8382fb5fe1f3 100644 --- a/.azure-pipelines/ModuleRelease.yml +++ b/.azure-pipelines/ModuleRelease.yml @@ -12,6 +12,7 @@ jobs: - script: | # Enable bash verbose logging set -x + echo $(readlink -m $(System.DefaultWorkingDirectory)) mkdir -p '$(GOPATH)/bin' mkdir -p '$(sdkPath)' shopt -s dotglob extglob From 9041569c81c5339b2025eee26a25e763b9c2b53c Mon Sep 17 00:00:00 2001 From: Arcturus Date: Mon, 21 Oct 2019 20:45:10 +0800 Subject: [PATCH 7/9] Update BuildTest.yml --- .azure-pipelines/BuildTest.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/BuildTest.yml b/.azure-pipelines/BuildTest.yml index 2a4636a5af1a..4c5dd6425792 100644 --- a/.azure-pipelines/BuildTest.yml +++ b/.azure-pipelines/BuildTest.yml @@ -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 + echo $(readlink -m $(System.DefaultWorkingDirectory)) mkdir -p '$(GOPATH)/bin' mkdir -p '$(sdkPath)' shopt -s dotglob extglob @@ -64,4 +65,4 @@ jobs: workingDirectory: '$(sdkPath)' displayName: 'Linter Check' failOnStderr: true - condition: succeededOrFailed() \ No newline at end of file + condition: succeededOrFailed() From 7035074004dda0653237ac8379002f8d1819044d Mon Sep 17 00:00:00 2001 From: Arcturus Date: Fri, 18 Oct 2019 17:07:06 +0800 Subject: [PATCH 8/9] 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 e4ed5da37e6c..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: in(variables['Build.Reason'], 'IndividualCI') - jobs: - - template: .azure-pipelines/ModuleRelease.yml \ No newline at end of file + 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 a2521df997fed16a5cb9bc56b7dfef46edcf1bbe Mon Sep 17 00:00:00 2001 From: SDK Automation Date: Fri, 25 Oct 2019 11:21:22 +0000 Subject: [PATCH 9/9] Generated from a71df15a587ec060147aaef2dcfc12d19500fdc8 Fix json format by prettier --- services/resources/mgmt/2015-12-01/features/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 services/resources/mgmt/2015-12-01/features/CHANGELOG.md diff --git a/services/resources/mgmt/2015-12-01/features/CHANGELOG.md b/services/resources/mgmt/2015-12-01/features/CHANGELOG.md deleted file mode 100644 index 4b553421a78a..000000000000 --- a/services/resources/mgmt/2015-12-01/features/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -No changes to exported content compared to the previous release.