1
1
[CmdletBinding (DefaultParameterSetName = " AllSet" )]
2
2
param (
3
- [int ]$MaxParalleAnalyzeJobs = 3 ,
4
- [int ]$MaxParalleTestWindowsJobs = 3 ,
5
- [int ]$MaxParalleTestLinuxJobs = 3 ,
6
- [int ]$MaxParalleTestMacJobs = 3 ,
7
- [string []]$ChangedFiles
3
+ [int ]$MaxParallelBuildJobs = 3 ,
4
+ [int ]$MaxParallelAnalyzeJobs = 3 ,
5
+ [int ]$MaxParallelTestWindowsJobs = 3 ,
6
+ [int ]$MaxParallelTestLinuxJobs = 3 ,
7
+ [int ]$MaxParallelTestMacJobs = 3 ,
8
+ [string []]$ChangedFiles ,
9
+ [string ]$RepoRoot
8
10
)
9
11
10
- $autorestFolders = @ {}
12
+ $utilFilePath = Join-Path $RepoRoot ' .azure-pipelines' ' PipelineSteps' ' BatchGeneration' ' util.psm1'
13
+ Import-Module $utilFilePath - Force
14
+
15
+ $changedModulesDict = @ {}
16
+ $changedSubModulesDict = @ {}
11
17
for ($i = 0 ; $i -lt $ChangedFiles.Count ; $i ++ ) {
12
18
if ($ChangedFiles [$i ] -match ' ^(src|generated)/([^/]+)/([^/]+\.autorest)/' ) {
13
19
$parent = $Matches [2 ]
14
20
$child = $Matches [3 ]
15
21
$key = " $parent /$child "
16
-
17
- $autorestFolders [$key ] = $true
22
+
23
+ $changedModulesDict [$parent ] = $true
24
+ $changedSubModulesDict [$key ] = $true
18
25
}
19
26
}
27
+ $changedModules = $changedModulesDict.Keys | Sort-Object
28
+ $changedSubModules = $changedSubModulesDict.Keys | Sort-Object
20
29
21
- $changedSubModules = $autorestFolders.Keys
22
- # TODO(Bernard) Remove test data after test
23
- # $changedSubModules = @("A", "B", "C", "D", "E", "F", "G")
24
- Write-Host " Chagned sub modules: "
25
- foreach ($subModule in $changedSubModules ) {
26
- Write-Host $subModule
30
+ Write-Host " ##[group]Changed modules: $ ( $changedModules.Count ) "
31
+ foreach ($module in $changedModules ) {
32
+ Write-Host $module
27
33
}
34
+ Write-Host " ##[endgroup]"
35
+ Write-Host
28
36
29
- function Split-List {
30
- param (
31
- [array ]$subModules ,
32
- [int ]$maxParallelJobs
33
- )
34
-
35
- $count = $subModules.Count
36
- $n = [Math ]::Min($count , $maxParallelJobs )
37
-
38
- if ($n -eq 0 ) {
39
- return @ ()
40
- }
41
-
42
- $result = @ ()
43
-
44
- for ($i = 0 ; $i -lt $n ; $i ++ ) {
45
- $result += , @ ()
46
- }
47
-
48
- for ($i = 0 ; $i -lt $count ; $i ++ ) {
49
- $groupIndex = $i % $n
50
- $result [$groupIndex ] += $subModules [$i ]
51
- }
52
-
53
- return , $result
37
+ Write-Host " ##[group]Changed sub modules: $ ( $changedSubModules.Count ) "
38
+ foreach ($subModule in $changedSubModules ) {
39
+ Write-Host $subModule
54
40
}
41
+ Write-Host " ##[endgroup]"
42
+ Write-Host
55
43
56
- function Write-Matrix {
57
- param (
58
- [string ]$variableName ,
59
- [array ]$groupedSubModules
60
- )
61
-
62
- $index = 0
63
- foreach ($subModules in $groupedSubModules ) {
64
- $moduleNamesStr = $subModules -join ' ,'
65
- $key = ($index + 1 ).ToString() + " -" + $subModules.Count
66
- $MatrixStr = " $MatrixStr ,'$key ':{'Target':'$moduleNamesStr ','MatrixKey':'$key '}"
67
- $index ++
68
- }
44
+ $groupedBuildModules = Group-Modules - Modules $changedModules - MaxParallelJobs $MaxParallelBuildJobs
45
+ Write-Matrix - GroupedModules $groupedBuildModules - VariableName ' buildTargets' - RepoRoot $RepoRoot
69
46
70
- if ($MatrixStr -and $MatrixStr.Length -gt 1 ) {
71
- $MatrixStr = $MatrixStr.Substring (1 )
72
- }
73
- Write-Host " ##vso[task.setVariable variable=$variableName ;isOutput=true]{$MatrixStr }"
74
- Write-Host " variable=$variableName ; value=$MatrixStr "
75
- }
47
+ $groupedAnalyzeModules = Group-Modules - Modules $changedModules - MaxParallelJobs $MaxParallelAnalyzeJobs
48
+ Write-Matrix - GroupedModules $groupedAnalyzeModules - variableName ' analyzeTargets' - RepoRoot $RepoRoot
76
49
77
- $groupedAnalyzeModules = Split-List - subModules $changedSubModules - maxParallelJobs $MaxParalleAnalyzeJobs
78
- Write-Matrix - variableName ' AnalyzeTargets ' - groupedSubModules $groupedAnalyzeModules
50
+ # $groupedTestWindowsModules = Split-List -subModules $changedSubModules -maxParallelJobs $MaxParallelTestWindowsJobs
51
+ # Write-Matrix -variableName 'TestWindowsTargets ' -groupedSubModules $groupedTestWindowsModules
79
52
80
- $groupedTestWindowsModules = Split-List - subModules $changedSubModules - maxParallelJobs $MaxParalleTestWindowsJobs
81
- Write-Matrix - variableName ' TestWindowsTargets ' - groupedSubModules $groupedTestWindowsModules
53
+ # $groupedTestLinuxModules = Split-List -subModules $changedSubModules -maxParallelJobs $MaxParallelTestLinuxJobs
54
+ # Write-Matrix -variableName 'TestLinuxTargets ' -groupedSubModules $groupedTestLinuxModules
82
55
83
- $groupedTestLinuxModules = Split-List - subModules $changedSubModules - maxParallelJobs $MaxParalleTestLinuxJobs
84
- Write-Matrix - variableName ' TestLinuxTargets' - groupedSubModules $groupedTestLinuxModules
85
-
86
- # $groupedTestMacModules = Split-List -subModules $changedSubModules -maxParallelJobs $MaxParalleTestMacJobs
56
+ # $groupedTestMacModules = Split-List -subModules $changedSubModules -maxParallelJobs $MaxParallelTestMacJobs
87
57
# Write-Matrix -variableName 'TestMacTargets' -groupedSubModules $groupedTestMacModules
88
-
89
- Write-Host " ##vso[task.setVariable variable=TestMacTargets;isOutput=true]{}"
0 commit comments