-
Notifications
You must be signed in to change notification settings - Fork 564
added stage field in spec and solved issue of checking duplicates of multip… #1875
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 4 commits
47f3163
34e2b2a
318babd
d2518e7
0d23fe7
a82ef6c
955e681
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -124,7 +124,7 @@ func GetRunNameFromJob(job models.DiggerJob) (*string, error) { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return &runName, nil | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
func getVariablesSpecFromEnvMap(envVars map[string]string) []spec.VariableSpec { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
func getVariablesSpecFromEnvMap(envVars map[string]string, stage string) []spec.VariableSpec { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
variablesSpec := make([]spec.VariableSpec, 0) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for k, v := range envVars { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if strings.HasPrefix(v, "$DIGGER_") { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -134,19 +134,42 @@ func getVariablesSpecFromEnvMap(envVars map[string]string) []spec.VariableSpec { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Value: val, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IsSecret: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IsInterpolated: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stage: stage, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
variablesSpec = append(variablesSpec, spec.VariableSpec{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Name: k, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Value: v, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IsSecret: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IsInterpolated: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stage: stage, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return variablesSpec | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
func findDuplicatesInStage(variablesSpec []spec.VariableSpec, stage string) (error) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
func findDuplicatesInStage(variablesSpec []spec.VariableSpec, stage string) (error) { | |
func findDuplicatesInStage(variablesSpec []spec.VariableSpec, stage string) error { |
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The findDuplicatesInStage
function in backend/services/spec.go
returns an error if duplicate variable names are found, but it doesn't include the job ID in the error message. This makes debugging more difficult because when an error occurs, it's not immediately clear which job caused the problem.
The fix modifies the function signature to accept a jobId
parameter and includes this ID in the error message. This change will make it easier to trace and debug issues related to duplicate variables in specific jobs.
The corresponding calls to this function in GetSpecFromJob
will also need to be updated to pass the job ID.
func findDuplicatesInStage(variablesSpec []spec.VariableSpec, stage string) (error) { | |
// Extract the names from VariableSpec | |
justNames := lo.Map(variablesSpec, func(item spec.VariableSpec, i int) string { | |
return item.Name | |
}) | |
// Group names by their occurrence | |
nameCounts := lo.CountValues(justNames) | |
// Filter names that occur more than once | |
duplicates := lo.Keys(lo.PickBy(nameCounts, func(name string, count int) bool { | |
return count > 1 | |
})) | |
if len(duplicates) > 0 { | |
return fmt.Errorf("duplicate variable names found in '%s' stage: %v", stage, strings.Join(duplicates, ", ")) | |
} | |
return nil // No duplicates found | |
} | |
func findDuplicatesInStage(variablesSpec []spec.VariableSpec, stage string, jobId string) (error) { | |
// Extract the names from VariableSpec | |
justNames := lo.Map(variablesSpec, func(item spec.VariableSpec, i int) string { | |
return item.Name | |
}) | |
// Group names by their occurrence | |
nameCounts := lo.CountValues(justNames) | |
// Filter names that occur more than once | |
duplicates := lo.Keys(lo.PickBy(nameCounts, func(name string, count int) bool { | |
return count > 1 | |
})) | |
if len(duplicates) > 0 { | |
return fmt.Errorf("duplicate variable names found in '%s' stage for job %s: %v", stage, jobId, strings.Join(duplicates, ", ")) | |
} | |
return nil // No duplicates found | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @motatoes I have added the new spec_test.go file for tests requested for the function also modified provider file to filter 3 new variables.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you please add a few quick tests to this function ?