From 837186e5793545d7718607db7a0735496ba6e305 Mon Sep 17 00:00:00 2001 From: Jiaqi Zhang Date: Wed, 22 Jan 2025 15:51:12 +0800 Subject: [PATCH 1/3] only management planer return error --- .../cmd/v2/automation/automationCmd.go | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/eng/tools/generator/cmd/v2/automation/automationCmd.go b/eng/tools/generator/cmd/v2/automation/automationCmd.go index 1a4ae5c17dfe..0adc740633e2 100644 --- a/eng/tools/generator/cmd/v2/automation/automationCmd.go +++ b/eng/tools/generator/cmd/v2/automation/automationCmd.go @@ -76,12 +76,33 @@ func execute(inputPath, outputPath, goVersion string) error { } } if err != nil { - return err + // Temporary strategy: Only if the project is a management plane project, the generator will return an error. + if IsManagementPlaneProject(input) { + return err + } + fmt.Println(err) } return nil } +func IsManagementPlaneProject(input *pipeline.GenerateInput) bool { + tspResult, autorestResult := true, true + for _, tspProjectFolder := range input.RelatedTypeSpecProjectFolder { + if !strings.Contains(tspProjectFolder, ".Management") { + tspResult = false + break + } + } + for _, readme := range input.RelatedReadmeMdFiles { + if !strings.Contains(readme, "resource-manager") { + autorestResult = false + break + } + } + return tspResult && autorestResult +} + type automationContext struct { sdkRoot string specRoot string From d83e98cce52412d8c352a9fac84d03dff268a668 Mon Sep 17 00:00:00 2001 From: Jiaqi Zhang Date: Wed, 22 Jan 2025 16:05:38 +0800 Subject: [PATCH 2/3] update logic --- eng/tools/generator/cmd/v2/automation/automationCmd.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/eng/tools/generator/cmd/v2/automation/automationCmd.go b/eng/tools/generator/cmd/v2/automation/automationCmd.go index 0adc740633e2..73bfb7b98fb1 100644 --- a/eng/tools/generator/cmd/v2/automation/automationCmd.go +++ b/eng/tools/generator/cmd/v2/automation/automationCmd.go @@ -87,20 +87,17 @@ func execute(inputPath, outputPath, goVersion string) error { } func IsManagementPlaneProject(input *pipeline.GenerateInput) bool { - tspResult, autorestResult := true, true for _, tspProjectFolder := range input.RelatedTypeSpecProjectFolder { if !strings.Contains(tspProjectFolder, ".Management") { - tspResult = false - break + return false } } for _, readme := range input.RelatedReadmeMdFiles { if !strings.Contains(readme, "resource-manager") { - autorestResult = false - break + return false } } - return tspResult && autorestResult + return true } type automationContext struct { From 746b22799dc7da8c15e28c9846f358d4d63fcbcf Mon Sep 17 00:00:00 2001 From: Jiaqi Zhang Date: Thu, 23 Jan 2025 17:00:02 +0800 Subject: [PATCH 3/3] add property hasExceptions in generateOutput.json --- .../cmd/v2/automation/automationCmd.go | 18 ++++++++++++++++++ .../cmd/v2/automation/pipeline/model.go | 1 + .../generator/cmd/v2/common/generation.go | 2 ++ 3 files changed, 21 insertions(+) diff --git a/eng/tools/generator/cmd/v2/automation/automationCmd.go b/eng/tools/generator/cmd/v2/automation/automationCmd.go index 73bfb7b98fb1..2723714e6e8c 100644 --- a/eng/tools/generator/cmd/v2/automation/automationCmd.go +++ b/eng/tools/generator/cmd/v2/automation/automationCmd.go @@ -162,7 +162,14 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline TspClientOptions: []string{"--debug"}, }, packageModuleRelativePath) if err != nil { + // save the error package for monitoring errorBuilder.add(err) + errorPackageResult := pipeline.PackageResult{ + PackageName: packageModuleRelativePath, + HasExceptions: true, + TypespecProject: []string{tspProjectFolder}, + } + results = append(results, errorPackageResult) continue } else { content := namespaceResult.ChangelogMD @@ -227,6 +234,17 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline namespaceResults, errors := generateCtx.GenerateForAutomation(readme, input.RepoHTTPSURL, ctx.goVersion) if len(errors) != 0 { errorBuilder.add(errors...) + for _, result := range namespaceResults { + if !result.HasError { + continue + } + errorPackageResult := pipeline.PackageResult{ + PackageName: result.PackageName, + HasExceptions: true, + ReadmeMd: []string{readme}, + } + results = append(results, errorPackageResult) + } continue } diff --git a/eng/tools/generator/cmd/v2/automation/pipeline/model.go b/eng/tools/generator/cmd/v2/automation/pipeline/model.go index 1a3c0726687c..7c60ba6e2558 100644 --- a/eng/tools/generator/cmd/v2/automation/pipeline/model.go +++ b/eng/tools/generator/cmd/v2/automation/pipeline/model.go @@ -86,6 +86,7 @@ type PackageResult struct { APIViewArtifact string `json:"apiViewArtifact,omitempty"` Language string `json:"language,omitempty"` TypespecProject []string `json:"typespecProject,omitempty"` + HasExceptions bool `json:"hasExceptions,omitempty"` } // Changelog ... diff --git a/eng/tools/generator/cmd/v2/common/generation.go b/eng/tools/generator/cmd/v2/common/generation.go index 3e229cb3d00e..94f6bcae93f7 100644 --- a/eng/tools/generator/cmd/v2/common/generation.go +++ b/eng/tools/generator/cmd/v2/common/generation.go @@ -39,6 +39,7 @@ type GenerateResult struct { Changelog Changelog ChangelogMD string PullRequestLabels string + HasError bool } type GenerateParam struct { @@ -94,6 +95,7 @@ func (ctx *GenerateContext) GenerateForAutomation(readme, repo, goVersion string }) if err != nil { errors = append(errors, fmt.Errorf("failed to generate for rp: %s, namespace: %s: %+v", rpName, packageInfo.Name, err)) + result = append(result, GenerateResult{PackageName: packageInfo.Name, HasError: true}) continue } result = append(result, *singleResult)