Skip to content

Commit c36e2f7

Browse files
authored
add flag to limit by number of projects to number of changed files (#1846)
* add flag to limit by number of projects to number of changed files * fix build
1 parent 59caccc commit c36e2f7

File tree

2 files changed

+14
-26
lines changed

2 files changed

+14
-26
lines changed

backend/config/envgetters.go

+4-13
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
package config
22

33
import (
4-
"fmt"
54
"os"
6-
"strconv"
75
)
86

9-
func GetMaxProjectsCreated() int {
10-
// the maximum number of impacted projects possible for a change
11-
// digger will fail when this number exceeds it
12-
// default value of 0 or negative means unlimited allowed
13-
maxProjects := os.Getenv("DIGGER_MAX_PROJECTS_IMPACTED")
14-
maxProjectsNum, err := strconv.Atoi(maxProjects)
15-
if err != nil {
16-
fmt.Printf("Error converting env var to number: %v\n", err)
17-
return 0
18-
}
19-
return maxProjectsNum
7+
func LimitByNumOfFilesChanged() bool {
8+
// if this flag is set then it will fail if there are more projects impacted than the
9+
// number of files changed
10+
return os.Getenv("DIGGER_LIMIT_MAX_PROJECTS_TO_FILES_CHANGED") == "1"
2011
}

backend/controllers/github.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -402,12 +402,11 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
402402
return nil
403403
}
404404

405-
// ratio of impacted projects to changed files should be less than MAX_RATIO
406-
maxProjects := config2.GetMaxProjectsCreated()
407-
if maxProjects > 0 {
408-
if len(impactedProjects) > maxProjects {
409-
log.Printf("Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects)
410-
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects))
405+
// if flag set we dont allow more projects impacted than the number of changed files in PR (safety check)
406+
if config2.LimitByNumOfFilesChanged() {
407+
if len(impactedProjects) > len(changedFiles) {
408+
log.Printf("Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles))
409+
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles)))
411410
log.Printf("Information about the event:")
412411
log.Printf("GH payload: %v", payload)
413412
log.Printf("PR changed files: %v", changedFiles)
@@ -420,7 +419,6 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
420419
return fmt.Errorf("error processing event")
421420
}
422421
}
423-
424422
diggerCommand, err := orchestrator_scheduler.GetCommandFromJob(jobsForImpactedProjects[0])
425423
if err != nil {
426424
log.Printf("could not determine digger command from job: %v", jobsForImpactedProjects[0].Commands)
@@ -792,12 +790,11 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
792790
}
793791
log.Printf("GitHub IssueComment event converted to Jobs successfully\n")
794792

795-
// ratio of impacted projects to changed files should be less than MAX_RATIO
796-
maxProjects := config2.GetMaxProjectsCreated()
797-
if maxProjects > 0 {
798-
if len(impactedProjects) > maxProjects {
799-
log.Printf("Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects)
800-
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects))
793+
// if flag set we dont allow more projects impacted than the number of changed files in PR (safety check)
794+
if config2.LimitByNumOfFilesChanged() {
795+
if len(impactedProjects) > len(changedFiles) {
796+
log.Printf("Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles))
797+
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles)))
801798
log.Printf("Information about the event:")
802799
log.Printf("GH payload: %v", payload)
803800
log.Printf("PR changed files: %v", changedFiles)

0 commit comments

Comments
 (0)