@@ -720,17 +720,6 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
720
720
return fmt .Errorf ("error initializing comment reporter" )
721
721
}
722
722
723
- err = utils .ReportInitialJobsStatus (commentReporter , jobsForImpactedProjects )
724
- if err != nil {
725
- slog .Error ("Failed to comment initial status for jobs" ,
726
- "prNumber" , prNumber ,
727
- "jobCount" , len (jobsForImpactedProjects ),
728
- "error" , err ,
729
- )
730
- commentReporterManager .UpdateComment (fmt .Sprintf (":x: Failed to comment initial status for jobs: %v" , err ))
731
- return fmt .Errorf ("failed to comment initial status for jobs" )
732
- }
733
-
734
723
err = utils .SetPRStatusForJobs (ghService , prNumber , jobsForImpactedProjects )
735
724
if err != nil {
736
725
slog .Error ("Error setting status for PR" ,
@@ -741,6 +730,40 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
741
730
return fmt .Errorf ("error setting status for PR: %v" , err )
742
731
}
743
732
733
+ nLayers , _ := orchestrator_scheduler .CountUniqueLayers (jobsForImpactedProjects )
734
+ slog .Debug ("Number of layers" ,
735
+ "prNumber" , prNumber ,
736
+ "nLayers" , nLayers ,
737
+ "respectLayers" , config .RespectLayers ,
738
+ )
739
+ if config .RespectLayers && nLayers > 1 {
740
+ slog .Debug ("Respecting layers" ,
741
+ "prNumber" , prNumber )
742
+ err = utils .ReportLayersTableForJobs (commentReporter , jobsForImpactedProjects )
743
+ if err != nil {
744
+ slog .Error ("Failed to comment initial status for jobs" ,
745
+ "prNumber" , prNumber ,
746
+ "jobCount" , len (jobsForImpactedProjects ),
747
+ "error" , err ,
748
+ )
749
+ commentReporterManager .UpdateComment (fmt .Sprintf (":x: Failed to comment initial status for jobs: %v" , err ))
750
+ return fmt .Errorf ("failed to comment initial status for jobs" )
751
+ }
752
+ slog .Debug ("not performing plan since there are multiple layers and respect_layers is enabled" )
753
+ return nil
754
+ } else {
755
+ err = utils .ReportInitialJobsStatus (commentReporter , jobsForImpactedProjects )
756
+ if err != nil {
757
+ slog .Error ("Failed to comment initial status for jobs" ,
758
+ "prNumber" , prNumber ,
759
+ "jobCount" , len (jobsForImpactedProjects ),
760
+ "error" , err ,
761
+ )
762
+ commentReporterManager .UpdateComment (fmt .Sprintf (":x: Failed to comment initial status for jobs: %v" , err ))
763
+ return fmt .Errorf ("failed to comment initial status for jobs" )
764
+ }
765
+ }
766
+
744
767
slog .Debug ("Preparing job and project maps" ,
745
768
"prNumber" , prNumber ,
746
769
"projectCount" , len (impactedProjects ),
@@ -788,6 +811,9 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
788
811
"jobCount" , len (impactedJobsMap ),
789
812
)
790
813
814
+ if config .RespectLayers {
815
+
816
+ }
791
817
batchId , _ , err := utils .ConvertJobsToDiggerJobs (
792
818
* diggerCommand ,
793
819
models .DiggerVCSGithub ,
@@ -1427,7 +1453,7 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
1427
1453
"branchName" , prBranchName ,
1428
1454
)
1429
1455
1430
- impactedProjects , impactedProjectsSourceMapping , requestedProject , _ , err := generic .ProcessIssueCommentEvent (issueNumber , commentBody , config , projectsGraph , ghService )
1456
+ processEventResult , err := generic .ProcessIssueCommentEvent (issueNumber , commentBody , config , projectsGraph , ghService )
1431
1457
if err != nil {
1432
1458
slog .Error ("Error processing issue comment event" ,
1433
1459
"issueNumber" , issueNumber ,
@@ -1436,45 +1462,49 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
1436
1462
commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error processing event: %v" , err ))
1437
1463
return fmt .Errorf ("error processing event" )
1438
1464
}
1465
+ impactedProjectsForComment := processEventResult .ImpactedProjectsForComment
1466
+ impactedProjectsSourceMapping := processEventResult .ImpactedProjectsSourceMapping
1467
+ allImpactedProjects := processEventResult .AllImpactedProjects
1439
1468
1440
1469
slog .Info ("Issue comment event processed successfully" ,
1441
1470
"issueNumber" , issueNumber ,
1442
- "impactedProjectCount" , len (impactedProjects ),
1443
- "requestedProject" , requestedProject ,
1471
+ "impactedProjectCount" , len (impactedProjectsForComment ),
1472
+ "allImpactedProjectsCount" , len (allImpactedProjects ),
1473
+
1444
1474
)
1445
1475
1446
- jobs , coverAllImpactedProjects , err := generic .ConvertIssueCommentEventToJobs (repoFullName , actor , issueNumber , commentBody , impactedProjects , requestedProject , config .Workflows , prBranchName , defaultBranch )
1476
+ jobs , coverAllImpactedProjects , err := generic .ConvertIssueCommentEventToJobs (repoFullName , actor , issueNumber , commentBody , impactedProjectsForComment , allImpactedProjects , config .Workflows , prBranchName , defaultBranch )
1447
1477
if err != nil {
1448
1478
slog .Error ("Error converting event to jobs" ,
1449
1479
"issueNumber" , issueNumber ,
1450
- "impactedProjectCount" , len (impactedProjects ),
1480
+ "impactedProjectCount" , len (impactedProjectsForComment ),
1451
1481
"error" , err ,
1452
1482
)
1453
1483
commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error converting event to jobs: %v" , err ))
1454
1484
return fmt .Errorf ("error converting event to jobs" )
1455
1485
}
1456
-
1486
+
1457
1487
slog .Info ("Issue comment event converted to jobs successfully" ,
1458
1488
"issueNumber" , issueNumber ,
1459
1489
"jobCount" , len (jobs ),
1460
1490
)
1461
1491
1462
1492
// if flag set we dont allow more projects impacted than the number of changed files in PR (safety check)
1463
1493
if config2 .LimitByNumOfFilesChanged () {
1464
- if len (impactedProjects ) > len (changedFiles ) {
1494
+ if len (impactedProjectsForComment ) > len (changedFiles ) {
1465
1495
slog .Error ("Number of impacted projects exceeds number of changed files" ,
1466
1496
"issueNumber" , issueNumber ,
1467
- "impactedProjectCount" , len (impactedProjects ),
1497
+ "impactedProjectCount" , len (impactedProjectsForComment ),
1468
1498
"changedFileCount" , len (changedFiles ),
1469
1499
)
1470
1500
1471
- commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error the number impacted projects %v exceeds number of changed files: %v" , len (impactedProjects ), len (changedFiles )))
1501
+ commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error the number impacted projects %v exceeds number of changed files: %v" , len (impactedProjectsForComment ), len (changedFiles )))
1472
1502
1473
1503
slog .Debug ("Detailed event information" ,
1474
1504
slog .Group ("details" ,
1475
1505
slog .Any ("changedFiles" , changedFiles ),
1476
1506
slog .Int ("configLength" , len (diggerYmlStr )),
1477
- slog .Int ("impactedProjectCount" , len (impactedProjects )),
1507
+ slog .Int ("impactedProjectCount" , len (impactedProjectsForComment )),
1478
1508
),
1479
1509
)
1480
1510
@@ -1483,20 +1513,20 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
1483
1513
}
1484
1514
1485
1515
maxImpactedProjectsPerChange := config2 .MaxImpactedProjectsPerChange ()
1486
- if len (impactedProjects ) > maxImpactedProjectsPerChange {
1516
+ if len (impactedProjectsForComment ) > maxImpactedProjectsPerChange {
1487
1517
slog .Error ("Number of impacted projects exceeds number of changed files" ,
1488
1518
"prNumber" , issueNumber ,
1489
- "impactedProjectCount" , len (impactedProjects ),
1519
+ "impactedProjectCount" , len (impactedProjectsForComment ),
1490
1520
"changedFileCount" , len (changedFiles ),
1491
1521
)
1492
1522
1493
- commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error the number impacted projects %v exceeds Max allowed ImpactedProjectsPerChange: %v, we set this limit to protect against hitting github API limits" , len (impactedProjects ), maxImpactedProjectsPerChange ))
1523
+ commentReporterManager .UpdateComment (fmt .Sprintf (":x: Error the number impacted projects %v exceeds Max allowed ImpactedProjectsPerChange: %v, we set this limit to protect against hitting github API limits" , len (impactedProjectsForComment ), maxImpactedProjectsPerChange ))
1494
1524
1495
1525
slog .Debug ("Detailed event information" ,
1496
1526
slog .Group ("details" ,
1497
1527
slog .Any ("changedFiles" , changedFiles ),
1498
1528
slog .Int ("configLength" , len (diggerYmlStr )),
1499
- slog .Int ("impactedProjectCount" , len (impactedProjects )),
1529
+ slog .Int ("impactedProjectCount" , len (impactedProjectsForComment )),
1500
1530
),
1501
1531
)
1502
1532
return fmt .Errorf ("error processing event" )
@@ -1506,11 +1536,11 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
1506
1536
if config .PrLocks {
1507
1537
slog .Info ("Processing PR locks for impacted projects" ,
1508
1538
"issueNumber" , issueNumber ,
1509
- "projectCount" , len (impactedProjects ),
1539
+ "projectCount" , len (impactedProjectsForComment ),
1510
1540
"command" , * diggerCommand ,
1511
1541
)
1512
1542
1513
- for _ , project := range impactedProjects {
1543
+ for _ , project := range impactedProjectsForComment {
1514
1544
prLock := dg_locking.PullRequestLock {
1515
1545
InternalLock : locking.BackendDBLock {
1516
1546
OrgId : orgId ,
@@ -1580,12 +1610,12 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
1580
1610
1581
1611
slog .Debug ("Preparing job and project maps" ,
1582
1612
"issueNumber" , issueNumber ,
1583
- "projectCount" , len (impactedProjects ),
1613
+ "projectCount" , len (impactedProjectsForComment ),
1584
1614
"jobCount" , len (jobs ),
1585
1615
)
1586
1616
1587
1617
impactedProjectsMap := make (map [string ]dg_configuration.Project )
1588
- for _ , p := range impactedProjects {
1618
+ for _ , p := range impactedProjectsForComment {
1589
1619
impactedProjectsMap [p .Name ] = p
1590
1620
}
1591
1621
0 commit comments