Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
321 changes: 321 additions & 0 deletions eng/pipelines/common/platform-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,321 @@
parameters:
jobTemplate: ''
buildConfig: ''
platforms: []
# platformGroup is a named collection of platforms. Allowed values:
# 'all' - all platforms
# 'gcstress' - platforms that support running under GCStress0x3 and GCStress0xC scenarios
platformGroup: ''
# helixQueueGroup is a named collection of Helix Queues. If specified, it determines which Helix queues are
# used, instead of the usual criteria. Allowed values:
# 'pr' - the queues used for a pull request for the platform. Typically a small set.
# 'ci' - the queues used for a CI (post-merge) test run.
# 'all' - the queues used for non-PR, non-CI test runs, e.g., Manual or Scheduled runs. Typically this is all available queues.
# 'corefx' - the queues used for a corefx test run.
helixQueueGroup: 'pr'
stagedBuild: false
# When set to false, suppresses reuse of OSX managed build artifacts (for pipelines without an OSX obj)
managedOsxBuild: true
jobParameters: {}

jobs:

# Linux arm

- ${{ if or(containsValue(parameters.platforms, 'Linux_arm'), in(parameters.platformGroup, 'all', 'gcstress')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
archType: arm
container:
image: ubuntu-16.04-cross-14.04-23cacb0-20191023143847
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Linux
helixQueues:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- (Ubuntu.1804.Arm32.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-30f6673-20190814153226
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- (Debian.9.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm32v7-74c9941-20190620155841
- (Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-30f6673-20190814153226
crossrootfsDir: '/crossrootfs/arm'
${{ insert }}: ${{ parameters.jobParameters }}

# Linux arm64

- ${{ if or(containsValue(parameters.platforms, 'Linux_arm64'), in(parameters.platformGroup, 'all', 'gcstress')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
archType: arm64
container:
image: ubuntu-16.04-cross-arm64-cfdd435-20191023143847
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Linux
helixQueues:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- (Ubuntu.1804.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-a45aeeb-20190620155855
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- (Debian.9.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm64v8-74c9941-20190620155840
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- (Debian.9.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm64v8-74c9941-20190620155840
- (Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-a45aeeb-20190620155855
crossrootfsDir: '/crossrootfs/arm64'
${{ insert }}: ${{ parameters.jobParameters }}

# Linux musl x64

- ${{ if or(containsValue(parameters.platforms, 'Linux_musl_x64'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
osSubgroup: _musl
archType: x64
container:
image: alpine-3.9-WithNode-0fc54a3-20190918214015
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
${{ if ne(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: Linux
managedTestBuildOsSubgroup: _musl
${{ if eq(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: OSX
helixQueues:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- (Alpine.310.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- (Alpine.38.Amd64)ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-09ca40b-20190508143246
- (Alpine.39.Amd64)ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-helix-09ca40b-20190508143246
- (Alpine.310.Amd64)ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.10-helix-3043688-20190918214010
${{ insert }}: ${{ parameters.jobParameters }}

# Linux musl arm64

- ${{ if or(containsValue(parameters.platforms, 'Linux_musl_arm64'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
osSubgroup: _musl
archType: arm64
container:
image: ubuntu-16.04-cross-arm64-alpine-406629a-20191023143847
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Linux
helixQueues:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- (Alpine.38.Arm64.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-arm64v8-a45aeeb-20190620184035
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- (Alpine.38.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.8-helix-arm64v8-a45aeeb-20190620184035
crossrootfsDir: '/crossrootfs/arm64'
${{ insert }}: ${{ parameters.jobParameters }}

# Linux rhel6 x64

- ${{ if or(containsValue(parameters.platforms, 'Linux_rhel6_x64'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
osSubgroup: _rhel6
archType: x64
container:
image: centos-6-f39df28-20191023143802
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
${{ if ne(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: Linux_rhel
${{ if eq(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: OSX
helixQueues:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- RedHat.6.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- RedHat.6.Amd64
${{ insert }}: ${{ parameters.jobParameters }}

# Linux x64

- ${{ if or(containsValue(parameters.platforms, 'Linux_x64'), in(parameters.platformGroup, 'all', 'gcstress')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Linux
archType: x64
container:
image: centos-7-f39df28-20191023143754
registry: mcr
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
${{ if ne(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: Linux
${{ if eq(parameters.managedOsxBuild, true) }}:
managedTestBuildOsGroup: OSX
helixQueues:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- Ubuntu.1804.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- Debian.9.Amd64.Open
- Ubuntu.1604.Amd64.Open
- Ubuntu.1804.Amd64.Open
- Centos.7.Amd64.Open
- RedHat.7.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- Debian.9.Amd64
- Ubuntu.1604.Amd64
- Ubuntu.1804.Amd64
- Centos.7.Amd64
- (Fedora.28.Amd64)Ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-28-helix-09ca40b-20190508143249
- RedHat.7.Amd64
${{ insert }}: ${{ parameters.jobParameters }}

# FreeBSD

# FreeBSD machines are currently offline. Re-enable in the official build when
# the machines are healthy.

# - template: xplat-setup.yml
# parameters:
# jobTemplate: ${{ parameters.jobTemplate }}
# osGroup: FreeBSD
# archType: x64
# jobParameters:
# buildConfig: ${{ parameters.buildConfig }}
# # There are no FreeBSD helix queues, so we don't run tests at the moment.
# helixQueues:
# asString: ''
# asArray: []
# ${{ insert }}: ${{ parameters.jobParameters }}

# macOS x64

- ${{ if or(containsValue(parameters.platforms, 'OSX_x64'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: OSX
archType: x64
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: OSX
helixQueues:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- OSX.1013.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- OSX.1013.Amd64.Open
- OSX.1014.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- OSX.1013.Amd64
- OSX.1014.Amd64
${{ insert }}: ${{ parameters.jobParameters }}

# Windows x64

- ${{ if or(containsValue(parameters.platforms, 'Windows_NT_x64'), in(parameters.platformGroup, 'all', 'gcstress')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Windows_NT
archType: x64
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Windows_NT
helixQueues:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- Windows.10.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-61052b7-20190723211353
- Windows.7.Amd64.Open
- Windows.81.Amd64.Open
- Windows.10.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- Windows.7.Amd64
- Windows.81.Amd64
- Windows.10.Amd64
- Windows.10.Amd64.Core
- (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-61052b7-20190723211353
${{ insert }}: ${{ parameters.jobParameters }}

# Windows x86

- ${{ if or(containsValue(parameters.platforms, 'Windows_NT_x86'), in(parameters.platformGroup, 'all', 'gcstress')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Windows_NT
archType: x86
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Windows_NT
helixQueues:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- Windows.10.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.helixQueueGroup, 'pr', 'ci', 'corefx')) }}:
- Windows.7.Amd64.Open
- Windows.81.Amd64.Open
- Windows.10.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- Windows.7.Amd64
- Windows.81.Amd64
- Windows.10.Amd64
- Windows.10.Amd64.Core
${{ insert }}: ${{ parameters.jobParameters }}

# Windows arm

- ${{ if or(containsValue(parameters.platforms, 'Windows_NT_arm'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Windows_NT
archType: arm
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Windows_NT
helixQueues:
# NOTE: there are no queues specified for Windows_NT_arm public with helixQueueGroup='pr'. This means that specifying
# Windows_NT_arm for a PR job causes a build, but no test run. If the test build and test runs were separate jobs,
# this could be more explicit (and less subtle).
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.helixQueueGroup, 'ci', 'corefx')) }}:
- Windows.10.Arm64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- Windows.10.Arm64
${{ insert }}: ${{ parameters.jobParameters }}

# Windows arm64

- ${{ if or(containsValue(parameters.platforms, 'Windows_NT_arm64'), eq(parameters.platformGroup, 'all')) }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
osGroup: Windows_NT
archType: arm64
jobParameters:
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
managedTestBuildOsGroup: Windows_NT
helixQueues:
# TODO: Consider adding Windows.10.Arm64.Open here if capacity is enough for handling both Windows_NT/arm and Windows_NT/arm64 testing
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- Windows.10.Arm64
${{ insert }}: ${{ parameters.jobParameters }}
52 changes: 52 additions & 0 deletions eng/pipelines/common/xplat-setup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
parameters:
jobTemplate: ''
osGroup: ''
osSubgroup: ''
archType: ''
container: ''
jobParameters: {}

jobs:
- template: ${{ parameters.jobTemplate }}
parameters:
variables:
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- name: archiveExtension
value: '.zip'
- name: archiveType
value: zip
- name: tarCompression
value: ''
- name: scriptExt
value: '.cmd'
- name: dir
value: '\'

- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- name: archiveExtension
value: '.tar.gz'
- name: archiveType
value: tar
- name: tarCompression
value: gz
- name: scriptExt
value: '.sh'
- name: dir
value: '/'

- ${{ if ne(parameters.jobParameters.crossrootfsDir, '') }}:
# This is only required for cross builds.
- name: ROOTFS_DIR
value: ${{ parameters.jobParameters.crossrootfsDir }}

osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
archType: ${{ parameters.archType }}

${{ if ne(parameters.container, '') }}:
${{ if eq(parameters.container.registry, 'mcr') }}:
container: ${{ format('{0}:{1}', 'mcr.microsoft.com/dotnet-buildtools/prereqs', parameters.container.image) }}
${{ if ne(parameters.container.registry, 'mcr') }}:
container: ${{ format('{0}:{1}', parameters.container.registry, parameters.container.image) }}

${{ insert }}: ${{ parameters.jobParameters }}
Loading