# _framework: (netcoreapp, netfx, uap, etc).
# _helixQueues: Windows.Amd64 (Only needed if submitToHelix -> true.) -- Queues should be separated by + if multiple.
- # Required: as part of the variables object, the following values need to be passed:
- # _outerloop: true | false
+ # Required: empty | innerloop | outerloop | all
+ testScope: ''
# Optional: _publishTests -> Boolean -> Publish test assets to blob storage if true.
# Default: false
- _msbuildCommonParameters: ''
- _archiveTestsParameter: ''
- _finalFrameworkArg: -framework $(_framework)
+ - _testScopeArg: ''
+
+ - ${{ if ne(parameters.testScope, '') }}:
+ - _testScopeArg: -testScope ${{ parameters.testScope }}
- ${{ if ne(job._jobFramework, '')}}:
- _finalFrameworkArg: ${{ job._jobFramework }}
-build
-buildtests
$(_commonArguments)
- /p:OuterLoop=$(_outerloop)
+ $(_testScopeArg)
$(_msbuildCommonParameters)
displayName: Build Sources and Tests
helixQueues: $(_helixQueues)
msbuildScript: $(_msbuildCommand)
framework: $(_framework)
- outerloop: $(_outerloop)
+ testScope: ${{ parameters.testScope }}
${{ if eq(parameters.isOfficialBuild, 'true') }}:
officialBuildId: $(Build.BuildNumber)
# Required: value to specify if the full test matrix should be tested
# Default: false
fullMatrix: false
- # Required: value to specify if the build is comming from an outerloop pipeline.
- # Default: false
- isOuterloopBuild: false
+ # Optional: value to scope the tests.
+ # Default: empty
+ testScope: ''
jobs:
- template: corefx-base.yml
parameters:
isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ testScope: ${{ parameters.testScope }}
targetOS: FreeBSD
jobs:
buildScriptPrefix: $(_buildScriptPrefix)
submitToHelix: false
-
- variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
msbuildScript: ''
targetOS: ''
officialBuildId: ''
- outerloop: '' # true | false
+ testScope: '' # empty | innerloop | outerloop | all
condition: always()
steps:
/p:ArchGroup=${{ parameters.archGroup }}
/p:ConfigurationGroup=${{ parameters.configuration }}
/p:OSGroup=${{ parameters.targetOS }}
- /p:OuterLoop=${{ parameters.outerloop }}
+ /p:testScope=${{ parameters.testScope }}
/p:TargetGroup=${{ parameters.framework }}
/p:HelixTargetQueues=${{ parameters.helixQueues }}
/p:HelixBuild=$(Build.BuildNumber)
# Required: value to specify if the full test matrix should be tested
# Default: false
fullMatrix: false
- # Required: value to specify if the build is comming from an outerloop pipeline.
- # Default: false
- isOuterloopBuild: false
+ # Optional: value to scope the tests.
+ # Default: empty
+ testScope: ''
jobs:
- template: corefx-base.yml
parameters:
isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ testScope: ${{ parameters.testScope }}
targetOS: Linux
jobs:
_buildScriptPrefix: ''
_buildExtraArguments: /p:RuntimeOS=linux-musl
- ${{ if eq(parameters.isOuterloopBuild, 'true') }}:
+ ${{ if or(eq(parameters.testScope, 'outerloop'), eq(parameters.testScope, 'all')) }}:
x64_Debug:
_BuildConfig: Debug
_architecture: x64
submitToHelix: true
variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
- linuxArm64Queues: \(Ubuntu.1604.Arm64.Open\)Ubuntu.1604.Arm64.Docker.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-b049512-20190321153539
- ${{ if eq(parameters.fullMatrix, 'false') }}:
# Legs without helix testing
# Only run this leg in PRs.
- - ${{ if and(eq(parameters.isOfficialBuild, 'false'), eq(parameters.isOuterloopBuild, 'false')) }}:
+ - ${{ if and(eq(parameters.isOfficialBuild, 'false'), and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all'))) }}:
- job: LinuxNoTest
displayName: Linux
strategy:
buildExtraArguments: $(_buildExtraArguments)
buildScriptPrefix: $(_buildScriptPrefix)
submitToHelix: false
-
- variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
# Required: value to specify if the full test matrix should be tested
# Default: false
fullMatrix: false
- # Required: value to specify if the build is comming from an outerloop pipeline.
- # Default: false
- isOuterloopBuild: false
+ # Optional: value to scope the tests.
+ # Default: empty
+ testScope: ''
jobs:
- template: corefx-base.yml
parameters:
isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ testScope: ${{ parameters.testScope }}
targetOS: OSX
jobs:
submitToHelix: true
variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
-
- ${{ if eq(parameters.isOfficialBuild, 'false') }}:
- macOSQueues: OSX.1012.Amd64.Open+OSX.1013.Amd64.Open
parameters:
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
- isOuterloopBuild: true
+ testScope: outerloop
# Linux outerloop legs
- ${{ if or(endsWith(variables['Build.DefinitionName'], 'linux'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}:
parameters:
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
- isOuterloopBuild: true
+ testScope: outerloop
# MacOS outerloop legs
- ${{ if or(endsWith(variables['Build.DefinitionName'], 'osx'), endsWith(variables['Build.DefinitionName'], 'outerloop')) }}:
parameters:
isOfficialBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
fullMatrix: ${{ notIn(variables['Build.Reason'], 'PullRequest') }}
- isOuterloopBuild: true
\ No newline at end of file
+ testScope: outerloop
\ No newline at end of file
# Required: value to specify if the full test matrix should be tested
# Default: false
fullMatrix: false
- # Required: value to specify if the build is comming from an outerloop pipeline.
- # Default: false
- isOuterloopBuild: false
+ # Optional: value to scope the tests.
+ # Default: empty
+ testScope: ''
jobs:
- template: corefx-base.yml
parameters:
isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ testScope: ${{ parameters.testScope }}
targetOS: Linux
jobs:
submitToHelix: true
variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
- redhatHelixQueue: RedHat.6.Amd64.Open
# Required: value to specify if the full test matrix should be tested
# Default: false
fullMatrix: false
- # Required: value to specify if the build is comming from an outerloop pipeline.
- # Default: false
- isOuterloopBuild: false
+ # Optional: value to scope the tests.
+ # Default: empty
+ testScope: ''
jobs:
- template: corefx-base.yml
parameters:
isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ testScope: ${{ parameters.testScope }}
targetOS: Windows_NT
jobs:
_helixQueues: $(uapNetfxQueues)
# Run arm on the matrix or in Outerloop
- ${{ if or(eq(parameters.fullMatrix, 'true'), eq(parameters.isOuterloopBuild, 'true')) }}:
+ ${{ if or(eq(parameters.fullMatrix, 'true'), or(eq(parameters.testScope, 'outerloop'), eq(parameters.testScope, 'all'))) }}:
arm64_Release:
_BuildConfig: Release
_architecture: arm64
buildExtraArguments: /p:RuntimeOS=win10
variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
-
- nanoQueues: "`(Windows.Nano.1803.Amd64.Open`)windows.10.amd64.serverrs4.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1803-helix-amd64-05227e1-20190509225944"
- uapNetfxQueues: Windows.10.Amd64.ClientRS5.Open
- windowsArmQueue: Windows.10.Arm64.Open
- netcoreappWindowsQueues: Windows.7.Amd64.Open+Windows.81.Amd64.Open+Windows.10.Amd64.ClientRS4.Open+Windows.10.Amd64.ServerRS5.Open
# There is no point of running legs without outerloop tests, when in an outerloop build.
- - ${{ if eq(parameters.isOuterloopBuild, 'false') }}:
+ - ${{ if and(ne(parameters.testScope, 'outerloop'), ne(parameters.testScope, 'all')) }}:
# Packaging all configurations
- job: AllConfigurations
displayName: Packaging All Configurations
buildExtraArguments: /p:RuntimeOS=win10
variables:
- - _outerloop: false
- allConfigurationsQueues: Windows.10.Amd64.ClientRS5.Open
_jobFramework: -allConfigurations
submitToHelix: false
buildExtraArguments: /p:RuntimeOS=win10
-
- variables:
- - _outerloop: ${{ parameters.isOuterloopBuild }}
<PropertyGroup>
<!-- Set helix source -->
<HelixSourcePrefix>pr/</HelixSourcePrefix>
- <HelixSourcePrefix Condition="'$(OfficialBuildId)' != ''">official/</HelixSourcePrefix>
<HelixSource Condition="'$(HelixSource)' == ''">$(HelixSourcePrefix)dotnet/corefx</HelixSource>
<HelixSource Condition="'$(BUILD_SOURCEBRANCH)' != ''">$(HelixSource)/$(BUILD_SOURCEBRANCH)</HelixSource>
<PropertyGroup Condition="'$(HelixType)' == ''">
<!-- For PRs we want helixtype to be the same for all frameworks except package testing-->
- <HelixType>test/functional/cli/</HelixType>
- <HelixType Condition="'$(Outerloop)' == 'true' AND '$(OfficialBuildId)' == ''">$(HelixType)/outerloop/</HelixType>
+ <TestFilter Condition="'$(TestFilter)' == ''">innerloop</TestFilter>
+ <HelixType>test/functional/cli/$(TestFilter)/</HelixType>
<HelixType Condition="'$(TargetGroup)' == 'AllConfigurations'">test/functional/packaging/</HelixType>
- <HelixType Condition="'$(TargetGroup)' == 'netfx' AND '$(OfficialBuildId)' != ''">test/functional/desktop/cli/</HelixType>
- <HelixType Condition="'$(TargetGroup)' == 'uap' AND '$(OfficialBuildId)' != ''">test/functional/uwp/</HelixType>
</PropertyGroup>
<PropertyGroup Condition="'$(HelixCommand)' == '' and '$(TargetGroup)' == 'AllConfigurations'">