Skip to content

Commit 9a7cc8f

Browse files
committed
Parameterize Incrementalist base branch for Azure DevOps pipelines (akkadotnet#7791)
* Parameterize Incrementalist base branch for Azure DevOps pipelines - Add dynamic incrementalist.baseBranch variable to pipeline templates - Use System.PullRequest.TargetBranch for PR builds - Default to 'dev' for non-PR builds - Update all Incrementalist commands to use --branch parameter This allows PRs targeting version branches (e.g., v1.5) to correctly compare against their target branch instead of always using dev, avoiding unnecessary full builds. * Fix Incrementalist base branch detection for Azure DevOps PRs - Use PowerShell script to extract branch name from System.PullRequest.TargetBranch - Strip 'refs/heads/' prefix from target branch reference - Set IncrementalistBaseBranch variable dynamically at runtime - Update all Incrementalist commands to use the new variable This fixes the issue where PR builds always used 'dev' as the base branch even when targeting version branches like v1.5.
1 parent acc0f34 commit 9a7cc8f

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

build-system/azure-pipeline.mntr-template.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ jobs:
2020
inputs:
2121
packageType: 'sdk'
2222
useGlobalJson: true
23+
24+
# Set the Incrementalist base branch based on PR target branch
25+
- pwsh: |
26+
if ('$(Build.Reason)' -eq 'PullRequest') {
27+
# Extract branch name from refs/heads/branch format
28+
$targetBranch = '$(System.PullRequest.TargetBranch)'.Replace('refs/heads/', '')
29+
Write-Host "PR detected - using base branch: $targetBranch"
30+
Write-Host "##vso[task.setvariable variable=IncrementalistBaseBranch]$targetBranch"
31+
} else {
32+
Write-Host "Not a PR - using default base branch: dev"
33+
Write-Host "##vso[task.setvariable variable=IncrementalistBaseBranch]dev"
34+
}
35+
displayName: 'Set Incrementalist base branch'
2336
2437
- script: dotnet tool restore
2538
displayName: 'Restore dotnet tools'

build-system/azure-pipeline.template.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ jobs:
2727
inputs:
2828
packageType: 'sdk'
2929
useGlobalJson: true
30+
31+
# Set the Incrementalist base branch based on PR target branch
32+
- pwsh: |
33+
if ('$(Build.Reason)' -eq 'PullRequest') {
34+
# Extract branch name from refs/heads/branch format
35+
$targetBranch = '$(System.PullRequest.TargetBranch)'.Replace('refs/heads/', '')
36+
Write-Host "PR detected - using base branch: $targetBranch"
37+
Write-Host "##vso[task.setvariable variable=IncrementalistBaseBranch]$targetBranch"
38+
} else {
39+
Write-Host "Not a PR - using default base branch: dev"
40+
Write-Host "##vso[task.setvariable variable=IncrementalistBaseBranch]dev"
41+
}
42+
displayName: 'Set Incrementalist base branch'
3043
3144
- script: dotnet tool restore
3245
displayName: 'Restore dotnet tools'

build-system/pr-validation.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ jobs:
5959
name: "netfx_tests_windows"
6060
displayName: ".NET Framework Unit Tests (Windows)"
6161
vmImage: "windows-latest"
62-
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json -- test -c Release --no-build --framework net48 --logger:trx --results-directory TestResults"
62+
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json --branch $(IncrementalistBaseBranch) -- test -c Release --no-build --framework net48 --logger:trx --results-directory TestResults"
6363
outputDirectory: "TestResults"
6464
artifactName: "netfx_tests_windows-$(Build.BuildId)"
6565

@@ -80,7 +80,7 @@ jobs:
8080
name: "net_tests_windows"
8181
displayName: ".NET Unit Tests (Windows)"
8282
vmImage: "windows-latest"
83-
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults"
83+
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json --branch $(IncrementalistBaseBranch) -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults"
8484
outputDirectory: "TestResults"
8585
artifactName: "net_tests_windows-$(Build.BuildId)"
8686

@@ -89,7 +89,7 @@ jobs:
8989
name: "net_tests_linux"
9090
displayName: ".NET Unit Tests (Linux)"
9191
vmImage: "ubuntu-latest"
92-
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults"
92+
command: "dotnet incrementalist run --config .incrementalist/testsOnly.json --branch $(IncrementalistBaseBranch) -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults"
9393
outputDirectory: "TestResults"
9494
artifactName: "net_tests_linux-$(Build.BuildId)"
9595

@@ -98,7 +98,7 @@ jobs:
9898
name: "net_mntr_windows"
9999
displayName: ".NET Multi-Node Tests (Windows)"
100100
vmImage: "windows-latest"
101-
command: "dotnet incrementalist run --config .incrementalist/mutliNodeOnly.json -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults/multinode"
101+
command: "dotnet incrementalist run --config .incrementalist/mutliNodeOnly.json --branch $(IncrementalistBaseBranch) -- test -c Release --no-build --framework net8.0 --logger:trx --results-directory TestResults/multinode"
102102
outputDirectory: "TestResults"
103103
artifactName: "net_mntr_windows-$(Build.BuildId)"
104104
mntrFailuresDir: 'TestResults\\multinode'

0 commit comments

Comments
 (0)