diff --git a/eng/Publishing.props b/eng/Publishing.props index a725552b67b3..916c58f18b8f 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -15,11 +15,18 @@ Shipping Release + + Vertical + External + Kind="Package" + Visibility="$(FSharpArtifactVisibility)" /> @@ -53,7 +60,7 @@ - + diff --git a/eng/pipelines/templates/stages/vmr-build-with-join.yml b/eng/pipelines/templates/stages/vmr-build-with-join.yml new file mode 100644 index 000000000000..845a5003953b --- /dev/null +++ b/eng/pipelines/templates/stages/vmr-build-with-join.yml @@ -0,0 +1,174 @@ +parameters: +# Stages that build individual verticals +- name: verticalsStages + type: stageList +# Stages that need to run after the final artifacts are determined after joining all verticals. +- name: postJoinStages + type: stageList + default: [] +# When we should run the final join stage and the stages that depend on it. +- name: finalJoinCondition + type: boolean + +#### sdk parameters #### +- name: isBuiltFromVmr + displayName: True when build is running from dotnet/dotnet directly + type: boolean + +- name: vmrBranch + displayName: dotnet/dotnet branch to use + type: string + +# These are not expected to be passed it but rather just object variables reused below +- name: pool_Linux + type: object + default: + name: $(defaultPoolName) + image: $(poolImage_Linux) + demands: ImageOverride -equals $(poolImage_Linux) + os: linux + +- name: pool_Windows + type: object + default: + name: $(defaultPoolName) + image: $(poolImage_Windows) + demands: ImageOverride -equals $(poolImage_Windows) + os: windows + +- name: pool_LinuxArm64 + type: object + default: + name: $(poolName_LinuxArm64) + image: $(poolImage_LinuxArm64) + demands: ImageOverride -equals $(poolImage_LinuxArm64) + hostArchitecture: Arm64 + os: linux + +- name: pool_Mac + type: object + default: + name: Azure Pipelines + vmImage: $(poolImage_Mac) + os: macOS + + +- name: pool_Linux_Shortstack + type: object + default: + name: $(shortStackPoolName) + image: $(poolImage_Linux) + demands: ImageOverride -equals $(poolImage_Linux) + os: linux + +stages: +# Insert all stages that build verticals +# and publish artifacts for each vertical +- ${{ each stage in parameters.verticalsStages }}: + - ${{ insert }}: ${{ stage }} +- ${{ if parameters.finalJoinCondition }}: + # This stage should contain all jobs that take inputs from all verticals and determine the exact final outputs. + - stage: VMR_Final_Join + displayName: 'VMR Final Join' + dependsOn: + - ${{ each stage in parameters.verticalsStages }}: + - ${{ if ne(stage.templateContext.validationOnly, 'true') }}: + - ${{ stage.stage }} + variables: + - ${{ if parameters.isBuiltFromVmr }}: + - name: vmrPath + value: $(Build.SourcesDirectory) + - ${{ else }}: + - name: vmrPath + value: $(Agent.BuildDirectory)/vmr + - template: ../variables/vmr-build.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + jobs: + - job: FinalJoin + displayName: Final Build Pass + pool: ${{ parameters.pool_Windows }} + timeoutInMinutes: 240 + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory)/artifacts + inputs: + # Download the artifacts from every job in every vertical stage under VerticalArtifacts + - ${{ each stage in parameters.verticalsStages }}: + - ${{ if ne(stage.templateContext.validationOnly, 'true') }}: + - ${{ each vertical in stage.jobs }}: + - input: pipelineArtifact + path: $(Build.ArtifactStagingDirectory)/VerticalArtifacts/${{ vertical.job }} + artifactName: ${{ vertical.job }}_Artifacts + - input: pipelineArtifact + path: $(Build.ArtifactStagingDirectory)/VerticalManifests + artifactName: VerticalManifests + outputs: + - output: pipelineArtifact + path: $(Build.ArtifactStagingDirectory)/artifacts/MergedManifest.xml + artifact: AssetManifests + displayName: Publish Merged Manifest + sbomEnabled: false + - output: buildArtifacts + PathtoPublish: $(Build.ArtifactStagingDirectory)/artifacts/assets + ArtifactName: BlobArtifacts + displayName: Publish Blob Artifacts + sbomEnabled: false + - output: buildArtifacts + PathtoPublish: $(Build.ArtifactStagingDirectory)/artifacts/packages + ArtifactName: PackageArtifacts + displayName: Publish Package Artifacts + sbomEnabled: false + - output: pipelineArtifact + path: $(Build.ArtifactStagingDirectory)/artifacts/log + artifact: JoinVerticals_BuildLogs_Attempt$(System.JobAttempt) + displayName: Publish Build Logs + sbomEnabled: false + condition: succeededOrFailed() + steps: + - ${{ if ne(variables['System.TeamProject'], 'internal') }}: + - task: DownloadPipelineArtifact@2 + displayName: Download asset manifests + inputs: + path: $(Build.ArtifactStagingDirectory)/VerticalManifests + artifactName: VerticalManifests + # Download the artifacts from every job in every vertical stage under VerticalArtifacts + - ${{ each stage in parameters.verticalsStages }}: + - ${{ if ne(stage.templateContext.validationOnly, 'true') }}: + - ${{ each vertical in stage.jobs }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Artifacts for ${{ vertical.job }} + inputs: + path: $(Build.ArtifactStagingDirectory)/VerticalArtifacts/${{ vertical.job }} + artifactName: ${{ vertical.job }}_Artifacts + - ${{ if not(parameters.isBuiltFromVmr) }}: + - template: ../steps/vmr-prepare.yml@self + parameters: + ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + vmrBranch: $(System.PullRequest.TargetBranch) + ${{ else }}: + vmrBranch: ${{ variables.VmrBranch }} + + - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - template: ../steps/vmr-pull-updates.yml@self + parameters: + vmrPath: ${{ variables.vmrPath }} + vmrBranch: ${{ variables.VmrBranch }} + targetRef: $(Build.SourceVersion) # Synchronize the current sdk commit + - template: ../steps/vmr-join-verticals.yml + parameters: + dotNetBuildPass: final + vmrPath: $(vmrPath) + outputFolder: $(Build.ArtifactStagingDirectory)/artifacts + # Insert all of the post-join stages. + - ${{ each postJoinStage in parameters.postJoinStages }}: + - stage: ${{ postJoinStage.stage }} + ${{ each pair in postJoinStage }}: + ${{ if notIn(pair.key, 'dependsOn', 'stage') }}: + ${{ pair.key }}: ${{ pair.value }} + dependsOn: + # Inject a dependency on the final join stage + - VMR_Final_Join + # add any dependencies provided via root yaml + - ${{ if ne(postJoinStage.dependsOn, '') }}: + - ${{ each dependency in postJoinStage.dependsOn }}: + - ${{ dependency }} diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml index 728c1fcfcfa1..9523c854dcbc 100644 --- a/eng/pipelines/templates/stages/vmr-build.yml +++ b/eng/pipelines/templates/stages/vmr-build.yml @@ -78,946 +78,81 @@ parameters: demands: ImageOverride -equals $(poolImage_Linux) os: linux -#### SOURCE-ONLY BUILD #### stages: -- ${{ if parameters.isSourceOnlyBuild }}: - - stage: VMR_SourceOnly_Build - displayName: VMR Source-Only Build - dependsOn: [] - variables: - - template: ../variables/vmr-build.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - - jobs: - - ### Jobs for ultralite builds ### - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Online_MsftSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: true # ✅ - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: ${{ format('{0}_Offline_CurrentSourceBuiltSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - reuseBuildArtifactsFrom: - - ${{ format('{0}_Online_MsftSdk_x64', variables.centOSStreamName) }} - - ### Additional jobs for lite/full builds ### - - ${{ if in(parameters.scope, 'lite', 'full') }}: - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_MsftSdk', variables.ubuntuName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.ubuntuContainerName }} - image: ${{ variables.ubuntuContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_PreviousSourceBuiltSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - artifactsRid: ${{ variables.centOSStreamX64Rid }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: true # ✅ - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: true # ✅ - - ### Additional jobs for full build ### - - ${{ if in(parameters.scope, 'full') }}: - - # This AlmaLinux leg is intended to build with the min supported glibc version - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_MsftSdk', variables.almaLinuxName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.almaLinuxContainerName }} - image: ${{ variables.almaLinuxContainerImage }} - targetRid: ${{ variables.almaLinuxX64Rid }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_MsftSdk', variables.alpineName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.alpineContainerName }} - image: ${{ variables.alpineContainerImage }} - targetRid: ${{ variables.alpineX64Rid }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_MsftSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: true # ✅ - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Online_PreviousSourceBuiltSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - artifactsRid: ${{ variables.centOSStreamX64Rid }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: true # ✅ - useMonoRuntime: false # 🚫 - withPreviousSDK: true # ✅ - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Mono_Offline_MsftSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: true # ✅ - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: true # ✅ - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_MsftSdk', variables.fedoraName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.fedoraContainerName }} - image: ${{ variables.fedoraContainerImage }} - buildFromArchive: true # ✅ - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}Arm64_Offline_MsftSdk', variables.ubuntuName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: arm64 - pool: ${{ parameters.pool_LinuxArm64 }} - container: - name: ${{ variables.ubuntuArmContainerName }} - image: ${{ variables.ubuntuArmContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Offline_CurrentSourceBuiltSdk', variables.fedoraName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.fedoraContainerName }} - image: ${{ variables.fedoraContainerImage }} - buildFromArchive: false # 🚫 - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: false # 🚫 - runOnline: false # 🚫 - useMonoRuntime: false # 🚫 - withPreviousSDK: false # 🚫 - reuseBuildArtifactsFrom: - - ${{ format('{0}_Offline_MsftSdk_x64', variables.fedoraName) }} - - - template: ../jobs/vmr-build.yml - parameters: - # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline - buildName: ${{ format('{0}_Mono_Offline_CurrentSourceBuiltSdk', variables.centOSStreamName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - targetArchitecture: x64 - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.centOSStreamContainerName }} - image: ${{ variables.centOSStreamContainerImage }} - buildFromArchive: true # ✅ - buildSourceOnly: true # ✅ - enablePoison: false # 🚫 - excludeOmniSharpTests: true # ✅ - runOnline: false # 🚫 - useMonoRuntime: true # ✅ - withPreviousSDK: false # 🚫 - reuseBuildArtifactsFrom: - - ${{ format('{0}_Mono_Offline_MsftSdk_x64', variables.centOSStreamName) }} - -#### VERTICAL BUILD (Validation) #### -- ${{ if and(not(parameters.isSourceOnlyBuild), or(eq(variables['Build.Reason'], 'PullRequest'), ne(variables['System.TeamProject'], 'internal'))) }}: - - stage: VMR_Vertical_Build_Validation - displayName: VMR Vertical Build Validation - dependsOn: [] - variables: - - template: ../variables/vmr-build.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - jobs: - - - template: ../jobs/vmr-build.yml - parameters: - buildName: ${{ format('{0}_Ubuntu_BuildTests', variables.ubuntuName) }} - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.ubuntuContainerName }} - image: ${{ variables.ubuntuContainerImage }} - targetOS: linux - targetArchitecture: x64 - extraProperties: /p:DotNetBuildTests=true - - - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: - - template: ../jobs/vmr-build.yml +- template: vmr-build-with-join.yml + parameters: + verticalsStages: + - template: vmr-verticals.yml parameters: - buildName: Windows_BuildTests + vmrBranch: ${{ parameters.vmrBranch }} + desiredSigning: ${{ parameters.desiredSigning }} + desiredIbc: ${{ parameters.desiredIbc }} isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} + scope: ${{ parameters.scope }} + isSourceOnlyBuild: ${{ parameters.isSourceOnlyBuild }} + finalJoinCondition: ${{ and(not(parameters.isSourceOnlyBuild), eq(parameters.scope, 'full')) }} + vmrBranch: ${{ parameters.vmrBranch }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + postJoinStages: + - ${{ if and(parameters.isBuiltFromVmr, not(parameters.isSourceOnlyBuild), eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - stage: Publish_Build_Assets + displayName: Publish Assets + jobs: + - template: /eng/common/templates-official/job/publish-build-assets.yml@self + parameters: + publishUsingPipelines: true + publishAssetsImmediately: true + pool: ${{ parameters.pool_Linux }} + + - stage: VMR_Validation + displayName: VMR Validation + variables: + - template: ../variables/vmr-build.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + desiredSigning: ${{ parameters.desiredSigning }} + desiredIbc: ${{ parameters.desiredIbc }} + - group: Release-Pipeline + - group: DotNetBot-GitHub-AllBranches + jobs: + - job: ValidateAssetBaselines + displayName: Validate Asset Baselines pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x64 - extraProperties: /p:DotNetBuildTests=true - -#### VERTICAL BUILD (Official) #### -- ${{ if not(parameters.isSourceOnlyBuild) }}: - - stage: VMR_Vertical_Build - displayName: VMR Vertical Build - dependsOn: [] - variables: - - template: ../variables/vmr-build.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - desiredSigning: ${{ parameters.desiredSigning }} - desiredIBC: ${{ parameters.desiredIBC }} - jobs: - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x64 - enableIBCOptimization: ${{ variables.ibcEnabled }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x86 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Android_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.androidCrossContainerName }} - image: ${{ variables.androidCrossContainerImage }} - targetOS: android - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Browser_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.browserCrossContainerName }} - image: ${{ variables.browserCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: browser - targetArchitecture: wasm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: iOSSimulator_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: iossimulator - targetArchitecture: arm64 - - ### Additional jobs for full build ### - - ${{ if in(parameters.scope, 'full') }}: - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Android_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.androidCrossContainerName }} - image: ${{ variables.androidCrossContainerImage }} - targetOS: android - targetArchitecture: arm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Android_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.androidCrossContainerName }} - image: ${{ variables.androidCrossContainerImage }} - targetOS: android - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Android_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.androidCrossContainerName }} - image: ${{ variables.androidCrossContainerImage }} - targetOS: android - targetArchitecture: x86 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Browser_Multithreaded_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.browserCrossContainerName }} - image: ${{ variables.browserCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: browser - targetArchitecture: wasm - extraProperties: /p:DotNetBuildRuntimeWasmEnableThreads=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: LinuxBionic_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.linuxBionicCrossContainerName }} - image: ${{ variables.linuxBionicCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux-bionic - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: LinuxBionic_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.linuxBionicCrossContainerName }} - image: ${{ variables.linuxBionicCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux-bionic - targetArchitecture: arm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: LinuxBionic_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.linuxBionicCrossContainerName }} - image: ${{ variables.linuxBionicCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux-bionic - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: iOS_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: ios - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: iOSSimulator_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: iossimulator - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: MacCatalyst_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: maccatalyst - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: MacCatalyst_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: maccatalyst - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: tvOS_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: tvos - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: tvOSSimulator_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: tvossimulator - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: tvOSSimulator_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: tvossimulator - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Wasi_Shortstack - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.wasiCrossContainerName }} - image: ${{ variables.wasiCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: wasi - targetArchitecture: wasm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: OSX - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: osx - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: OSX_Shortstack_Mono_LLVMAOT - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - useMonoRuntime: true - targetOS: osx - targetArchitecture: x64 - extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxX64CrossContainerName }} - image: ${{ variables.azurelinuxX64CrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux - targetArchitecture: x64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Pgo - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: false - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxX64CrossContainerName }} - image: ${{ variables.azurelinuxX64CrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux - targetArchitecture: x64 - extraProperties: /p:PgoInstrument=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Shortstack_Mono_LLVMAOT - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.azurelinuxX64CrossContainerName }} - image: ${{ variables.azurelinuxX64CrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - useMonoRuntime: true - targetOS: linux - targetArchitecture: x64 - extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxArmCrossContainerName }} - image: ${{ variables.azurelinuxArmCrossContainerImage }} - crossRootFs: '/crossrootfs/arm' - targetOS: linux - targetArchitecture: arm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxArm64CrossContainerName }} - image: ${{ variables.azurelinuxArm64CrossContainerImage }} - crossRootFs: '/crossrootfs/arm64' - targetOS: linux - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Pgo - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: false - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxArm64CrossContainerName }} - image: ${{ variables.azurelinuxArm64CrossContainerImage }} - crossRootFs: '/crossrootfs/arm64' - targetOS: linux - targetArchitecture: arm64 - extraProperties: /p:PgoInstrument=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Alpine - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxX64MuslCrossContainerName }} - image: ${{ variables.azurelinuxX64MuslCrossContainerImage }} - crossRootFs: '/crossrootfs/x64' - targetOS: linux-musl - targetArchitecture: x64 - targetRid: ${{ variables.linuxMuslX64Rid }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Alpine - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxArmMuslCrossContainerName }} - image: ${{ variables.azurelinuxArmMuslCrossContainerImage }} - crossRootFs: '/crossrootfs/arm' - targetOS: linux-musl - targetArchitecture: arm - targetRid: ${{ variables.linuxMuslArmRid }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Alpine - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux }} - container: - name: ${{ variables.azurelinuxArm64MuslCrossContainerName }} - image: ${{ variables.azurelinuxArm64MuslCrossContainerImage }} - crossRootFs: '/crossrootfs/arm64' - targetOS: linux-musl - targetArchitecture: arm64 - targetRid: ${{ variables.linuxMuslArm64Rid }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: AzureLinux_x64_Cross_Shortstack_Mono_LLVMAOT - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Linux_Shortstack }} - container: - name: ${{ variables.azurelinuxArm64CrossContainerName }} - image: ${{ variables.azurelinuxArm64CrossContainerImage }} - crossRootFs: '/crossrootfs/arm64' - useMonoRuntime: true - targetOS: linux - targetArchitecture: arm64 - extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: OSX - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Mac }} - targetOS: osx - targetArchitecture: arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: arm64 - enableIBCOptimization: ${{ variables.ibcEnabled }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows_Pgo - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: false - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x64 - extraProperties: /p:PgoInstrument=true - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows_Pgo - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: false - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x86 - extraProperties: /p:PgoInstrument=true - enableIBCOptimization: ${{ variables.ibcEnabled }} - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows_Pgo - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: false + timeoutInMinutes: 180 + steps: + - template: ../steps/vmr-validate-asset-baseline.yml + parameters: + continueOnError: true + - ${{ if eq(variables.signEnabled, 'true') }}: + - job: ValidateSigning_Windows + displayName: Validate Signing - Windows pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: arm64 - extraProperties: /p:PgoInstrument=true - - # Build Pass 2 verticals - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x64 - buildPass: 2 - reuseBuildArtifactsFrom: - - Windows_x64 - - Windows_x86 - - Windows_arm64 - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: x86 - buildPass: 2 - reuseBuildArtifactsFrom: - - Windows_x64 - - Windows_x86 - - Windows_arm64 - - AzureLinux_x64_Cross_x64 - - AzureLinux_x64_Cross_Alpine_x64 - - AzureLinux_x64_Cross_arm64 - - AzureLinux_x64_Cross_Alpine_arm64 - - AzureLinux_x64_Cross_arm - - AzureLinux_x64_Cross_Alpine_arm - - - template: ../jobs/vmr-build.yml - parameters: - buildName: Windows - isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ variables.VmrBranch }} - sign: ${{ variables.signEnabled }} - pool: ${{ parameters.pool_Windows }} - targetOS: windows - targetArchitecture: arm64 - buildPass: 2 - reuseBuildArtifactsFrom: - - Windows_x64 - - Windows_x86 - - Windows_arm64 - -### FINAL JOIN ### -- ${{ if and(parameters.isBuiltFromVmr, not(parameters.isSourceOnlyBuild), eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - stage: VMR_Final_Join - displayName: VMR Final Join - dependsOn: VMR_Vertical_Build - variables: - - template: ../variables/vmr-build.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - jobs: - - job: FinalJoin - displayName: Final Build Pass - pool: ${{ parameters.pool_Windows }} - timeoutInMinutes: 240 - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory)/artifacts - outputs: - - output: pipelineArtifact - path: $(Build.ArtifactStagingDirectory)/artifacts/MergedManifest.xml - artifact: AssetManifests - displayName: Publish Merged Manifest - sbomEnabled: false - - output: buildArtifacts - PathtoPublish: $(Build.ArtifactStagingDirectory)/artifacts/assets - ArtifactName: BlobArtifacts - displayName: Publish Blob Artifacts - sbomEnabled: false - - output: buildArtifacts - PathtoPublish: $(Build.ArtifactStagingDirectory)/artifacts/packages - ArtifactName: PackageArtifacts - displayName: Publish Package Artifacts - sbomEnabled: false - steps: - - template: ../steps/vmr-join-verticals.yml - parameters: - dotNetBuildPass: final - primaryDependentJob: Windows_x64 - outputFolder: $(Build.ArtifactStagingDirectory)/artifacts - - - stage: Publish_Build_Assets - displayName: Publish Assets - dependsOn: VMR_Final_Join - jobs: - - template: /eng/common/templates-official/job/publish-build-assets.yml@self - parameters: - publishUsingPipelines: true - publishAssetsImmediately: true - pool: ${{ parameters.pool_Linux }} - - - stage: VMR_Validation - displayName: VMR Validation - dependsOn: VMR_Final_Join - variables: - - template: ../variables/vmr-build.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - desiredSigning: ${{ parameters.desiredSigning }} - - group: Release-Pipeline - - group: DotNetBot-GitHub-AllBranches - jobs: - - job: ValidateAssetBaselines - displayName: Validate Asset Baselines - pool: ${{ parameters.pool_Windows }} - timeoutInMinutes: 180 - steps: - - template: ../steps/vmr-validate-asset-baseline.yml - parameters: - continueOnError: true - - ${{ if eq(variables.signEnabled, 'true') }}: - - job: ValidateSigning_Windows - displayName: Validate Signing - Windows - pool: ${{ parameters.pool_Windows }} - timeoutInMinutes: 240 - steps: - - template: ../steps/vmr-validate-signing.yml - parameters: - artifactName: PackageArtifacts - continueOnError: true - OS: Windows_NT - - job: ValidateSigning_Mac - displayName: Validate Signing - Mac - pool: ${{ parameters.pool_Mac }} - timeoutInMinutes: 240 - steps: - - template: ../steps/vmr-validate-signing.yml - parameters: - artifactName: BlobArtifacts - continueOnError: true - OS: Darwin - - job: ValidateSigning_Linux - displayName: Validate Signing - Linux - pool: ${{ parameters.pool_Linux }} - timeoutInMinutes: 240 - steps: - - template: ../steps/vmr-validate-signing.yml - parameters: - artifactName: BlobArtifacts - continueOnError: true - OS: Linux + timeoutInMinutes: 240 + steps: + - template: ../steps/vmr-validate-signing.yml + parameters: + artifactName: PackageArtifacts + continueOnError: true + OS: Windows_NT + + - job: ValidateSigning_Mac + displayName: Validate Signing - Mac + pool: ${{ parameters.pool_Mac }} + timeoutInMinutes: 240 + steps: + - template: ../steps/vmr-validate-signing.yml + parameters: + artifactName: BlobArtifacts + continueOnError: true + OS: Darwin + + - job: ValidateSigning_Linux + displayName: Validate Signing - Linux + pool: ${{ parameters.pool_Linux }} + timeoutInMinutes: 240 + steps: + - template: ../steps/vmr-validate-signing.yml + parameters: + artifactName: BlobArtifacts + continueOnError: true + OS: Linux diff --git a/eng/pipelines/templates/stages/vmr-verticals.yml b/eng/pipelines/templates/stages/vmr-verticals.yml new file mode 100644 index 000000000000..c93ee9bf5a08 --- /dev/null +++ b/eng/pipelines/templates/stages/vmr-verticals.yml @@ -0,0 +1,925 @@ +### This stage builds https://github.com/dotnet/dotnet with varying parameters +### If run in a PR, new changes are applied to a local copy of the VMR, then it is built and tested + +parameters: +# Branch of the VMR to use (to push to for internal builds) +- name: vmrBranch + type: string + default: $(Build.SourceBranch) + +- name: desiredSigning + type: string + default: '' + +- name: desiredIbc + type: string + default: '' + +# Scope of jobs which are executed +- name: scope + type: string + values: + # run 1 leg for smoke tests + - ultralite + # run several legs e.g. win/linux/mac for basic testing + - lite + # run everything + - full + +# True when build is running from dotnet/dotnet directly +- name: isBuiltFromVmr + type: boolean + default: false + +# True when building the VMR in source-only mode +- name: isSourceOnlyBuild + type: boolean + default: false + +# These are not expected to be passed it but rather just object variables reused below +- name: pool_Linux + type: object + default: + name: $(defaultPoolName) + image: $(poolImage_Linux) + demands: ImageOverride -equals $(poolImage_Linux) + os: linux + +- name: pool_Windows + type: object + default: + name: $(defaultPoolName) + image: $(poolImage_Windows) + demands: ImageOverride -equals $(poolImage_Windows) + os: windows + +- name: pool_LinuxArm64 + type: object + default: + name: $(poolName_LinuxArm64) + image: $(poolImage_LinuxArm64) + demands: ImageOverride -equals $(poolImage_LinuxArm64) + hostArchitecture: Arm64 + os: linux + +- name: pool_Mac + type: object + default: + name: Azure Pipelines + vmImage: $(poolImage_Mac) + os: macOS + + +- name: pool_Linux_Shortstack + type: object + default: + name: $(shortStackPoolName) + image: $(poolImage_Linux) + demands: ImageOverride -equals $(poolImage_Linux) + os: linux + +#### SOURCE-ONLY BUILD #### +stages: +- ${{ if parameters.isSourceOnlyBuild }}: + - stage: VMR_SourceOnly_Build + displayName: VMR Source-Only Build + dependsOn: [] + variables: + - template: ../variables/vmr-build.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + + jobs: + + ### Jobs for ultralite builds ### + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Online_MsftSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: true # ✅ + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: ${{ format('{0}_Offline_CurrentSourceBuiltSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + reuseBuildArtifactsFrom: + - ${{ format('{0}_Online_MsftSdk_x64', variables.centOSStreamName) }} + + ### Additional jobs for lite/full builds ### + - ${{ if in(parameters.scope, 'lite', 'full') }}: + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_MsftSdk', variables.ubuntuName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.ubuntuContainerName }} + image: ${{ variables.ubuntuContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_PreviousSourceBuiltSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + artifactsRid: ${{ variables.centOSStreamX64Rid }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: true # ✅ + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: true # ✅ + + ### Additional jobs for full build ### + - ${{ if in(parameters.scope, 'full') }}: + + # This AlmaLinux leg is intended to build with the min supported glibc version + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_MsftSdk', variables.almaLinuxName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.almaLinuxContainerName }} + image: ${{ variables.almaLinuxContainerImage }} + targetRid: ${{ variables.almaLinuxX64Rid }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_MsftSdk', variables.alpineName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.alpineContainerName }} + image: ${{ variables.alpineContainerImage }} + targetRid: ${{ variables.alpineX64Rid }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_MsftSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: true # ✅ + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Online_PreviousSourceBuiltSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + artifactsRid: ${{ variables.centOSStreamX64Rid }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: true # ✅ + useMonoRuntime: false # 🚫 + withPreviousSDK: true # ✅ + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Mono_Offline_MsftSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: true # ✅ + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: true # ✅ + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_MsftSdk', variables.fedoraName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.fedoraContainerName }} + image: ${{ variables.fedoraContainerImage }} + buildFromArchive: true # ✅ + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}Arm64_Offline_MsftSdk', variables.ubuntuName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: arm64 + pool: ${{ parameters.pool_LinuxArm64 }} + container: + name: ${{ variables.ubuntuArmContainerName }} + image: ${{ variables.ubuntuArmContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Offline_CurrentSourceBuiltSdk', variables.fedoraName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.fedoraContainerName }} + image: ${{ variables.fedoraContainerImage }} + buildFromArchive: false # 🚫 + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: false # 🚫 + runOnline: false # 🚫 + useMonoRuntime: false # 🚫 + withPreviousSDK: false # 🚫 + reuseBuildArtifactsFrom: + - ${{ format('{0}_Offline_MsftSdk_x64', variables.fedoraName) }} + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: ${{ format('{0}_Mono_Offline_CurrentSourceBuiltSdk', variables.centOSStreamName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + targetArchitecture: x64 + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.centOSStreamContainerName }} + image: ${{ variables.centOSStreamContainerImage }} + buildFromArchive: true # ✅ + buildSourceOnly: true # ✅ + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: false # 🚫 + useMonoRuntime: true # ✅ + withPreviousSDK: false # 🚫 + reuseBuildArtifactsFrom: + - ${{ format('{0}_Mono_Offline_MsftSdk_x64', variables.centOSStreamName) }} + +#### VERTICAL BUILD (Validation) #### +- ${{ if and(not(parameters.isSourceOnlyBuild), or(eq(variables['Build.Reason'], 'PullRequest'), ne(variables['System.TeamProject'], 'internal'))) }}: + - stage: VMR_Vertical_Build_Validation + displayName: VMR Vertical Build Validation + templateContext: + validationOnly: true + dependsOn: [] + variables: + - template: ../variables/vmr-build.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + jobs: + + - template: ../jobs/vmr-build.yml + parameters: + buildName: ${{ format('{0}_Ubuntu_BuildTests', variables.ubuntuName) }} + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.ubuntuContainerName }} + image: ${{ variables.ubuntuContainerImage }} + targetOS: linux + targetArchitecture: x64 + extraProperties: /p:DotNetBuildTests=true + + - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_BuildTests + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x64 + extraProperties: /p:DotNetBuildTests=true + +#### VERTICAL BUILD (Official) #### +- ${{ if not(parameters.isSourceOnlyBuild) }}: + - stage: VMR_Vertical_Build + displayName: VMR Vertical Build + dependsOn: [] + variables: + - template: ../variables/vmr-build.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + desiredSigning: ${{ parameters.desiredSigning }} + desiredIBC: ${{ parameters.desiredIBC }} + jobs: + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x64 + enableIBCOptimization: ${{ variables.ibcEnabled }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x86 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Android_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.androidCrossContainerName }} + image: ${{ variables.androidCrossContainerImage }} + targetOS: android + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Browser_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.browserCrossContainerName }} + image: ${{ variables.browserCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: browser + targetArchitecture: wasm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: iOSSimulator_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: iossimulator + targetArchitecture: arm64 + + ### Additional jobs for full build ### + - ${{ if in(parameters.scope, 'full') }}: + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Android_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.androidCrossContainerName }} + image: ${{ variables.androidCrossContainerImage }} + targetOS: android + targetArchitecture: arm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Android_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.androidCrossContainerName }} + image: ${{ variables.androidCrossContainerImage }} + targetOS: android + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Android_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.androidCrossContainerName }} + image: ${{ variables.androidCrossContainerImage }} + targetOS: android + targetArchitecture: x86 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Browser_Multithreaded_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.browserCrossContainerName }} + image: ${{ variables.browserCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: browser + targetArchitecture: wasm + extraProperties: /p:DotNetBuildRuntimeWasmEnableThreads=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: LinuxBionic_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.linuxBionicCrossContainerName }} + image: ${{ variables.linuxBionicCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux-bionic + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: LinuxBionic_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.linuxBionicCrossContainerName }} + image: ${{ variables.linuxBionicCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux-bionic + targetArchitecture: arm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: LinuxBionic_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.linuxBionicCrossContainerName }} + image: ${{ variables.linuxBionicCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux-bionic + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: iOS_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: ios + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: iOSSimulator_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: iossimulator + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: MacCatalyst_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: maccatalyst + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: MacCatalyst_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: maccatalyst + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: tvOS_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: tvos + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: tvOSSimulator_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: tvossimulator + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: tvOSSimulator_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: tvossimulator + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Wasi_Shortstack + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.wasiCrossContainerName }} + image: ${{ variables.wasiCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: wasi + targetArchitecture: wasm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: OSX + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: osx + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: OSX_Shortstack_Mono_LLVMAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + useMonoRuntime: true + targetOS: osx + targetArchitecture: x64 + extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxX64CrossContainerName }} + image: ${{ variables.azurelinuxX64CrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux + targetArchitecture: x64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Pgo + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: false + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxX64CrossContainerName }} + image: ${{ variables.azurelinuxX64CrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux + targetArchitecture: x64 + extraProperties: /p:PgoInstrument=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Shortstack_Mono_LLVMAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.azurelinuxX64CrossContainerName }} + image: ${{ variables.azurelinuxX64CrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + useMonoRuntime: true + targetOS: linux + targetArchitecture: x64 + extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxArmCrossContainerName }} + image: ${{ variables.azurelinuxArmCrossContainerImage }} + crossRootFs: '/crossrootfs/arm' + targetOS: linux + targetArchitecture: arm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxArm64CrossContainerName }} + image: ${{ variables.azurelinuxArm64CrossContainerImage }} + crossRootFs: '/crossrootfs/arm64' + targetOS: linux + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Pgo + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: false + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxArm64CrossContainerName }} + image: ${{ variables.azurelinuxArm64CrossContainerImage }} + crossRootFs: '/crossrootfs/arm64' + targetOS: linux + targetArchitecture: arm64 + extraProperties: /p:PgoInstrument=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Alpine + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxX64MuslCrossContainerName }} + image: ${{ variables.azurelinuxX64MuslCrossContainerImage }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux-musl + targetArchitecture: x64 + targetRid: ${{ variables.linuxMuslX64Rid }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Alpine + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxArmMuslCrossContainerName }} + image: ${{ variables.azurelinuxArmMuslCrossContainerImage }} + crossRootFs: '/crossrootfs/arm' + targetOS: linux-musl + targetArchitecture: arm + targetRid: ${{ variables.linuxMuslArmRid }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Alpine + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux }} + container: + name: ${{ variables.azurelinuxArm64MuslCrossContainerName }} + image: ${{ variables.azurelinuxArm64MuslCrossContainerImage }} + crossRootFs: '/crossrootfs/arm64' + targetOS: linux-musl + targetArchitecture: arm64 + targetRid: ${{ variables.linuxMuslArm64Rid }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_Shortstack_Mono_LLVMAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Linux_Shortstack }} + container: + name: ${{ variables.azurelinuxArm64CrossContainerName }} + image: ${{ variables.azurelinuxArm64CrossContainerImage }} + crossRootFs: '/crossrootfs/arm64' + useMonoRuntime: true + targetOS: linux + targetArchitecture: arm64 + extraProperties: /p:DotNetBuildMonoEnableLLVM=true /p:DotNetBuildMonoAOTEnableLLVM=true /p:DotNetBuildMonoBundleLLVMOptimizer=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: OSX + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Mac }} + targetOS: osx + targetArchitecture: arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: arm64 + enableIBCOptimization: ${{ variables.ibcEnabled }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_Pgo + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: false + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x64 + extraProperties: /p:PgoInstrument=true + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_Pgo + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: false + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x86 + extraProperties: /p:PgoInstrument=true + enableIBCOptimization: ${{ variables.ibcEnabled }} + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_Pgo + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: false + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: arm64 + extraProperties: /p:PgoInstrument=true + + # Build Pass 2 verticals + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x64 + buildPass: 2 + reuseBuildArtifactsFrom: + - Windows_x64 + - Windows_x86 + - Windows_arm64 + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x86 + buildPass: 2 + reuseBuildArtifactsFrom: + - Windows_x64 + - Windows_x86 + - Windows_arm64 + - AzureLinux_x64_Cross_x64 + - AzureLinux_x64_Cross_Alpine_x64 + - AzureLinux_x64_Cross_arm64 + - AzureLinux_x64_Cross_Alpine_arm64 + - AzureLinux_x64_Cross_arm + - AzureLinux_x64_Cross_Alpine_arm + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + sign: ${{ variables.signEnabled }} + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: arm64 + buildPass: 2 + reuseBuildArtifactsFrom: + - Windows_x64 + - Windows_x86 + - Windows_arm64 diff --git a/eng/pipelines/templates/steps/vmr-join-verticals.yml b/eng/pipelines/templates/steps/vmr-join-verticals.yml index 50b1866b098f..5d13d4e02018 100644 --- a/eng/pipelines/templates/steps/vmr-join-verticals.yml +++ b/eng/pipelines/templates/steps/vmr-join-verticals.yml @@ -3,35 +3,28 @@ parameters: type: string default: final -- name: primaryDependentJob +- name: vmrPath type: string - default: Windows_x64 + default: $(Agent.BuildDirectory)/vmr - name: outputFolder type: string default: $(Build.ArtifactStagingDirectory)/artifacts steps: -- task: DownloadBuildArtifacts@1 - inputs: - artifactName: 'VerticalManifests' - downloadPath: $(Build.ArtifactStagingDirectory) - checkDownloadedFiles: true - -- task: DownloadPipelineArtifact@2 - inputs: - artifactName: ${{ parameters.primaryDependentJob }}_Artifacts - targetPath: $(Build.ArtifactStagingDirectory)/${{ parameters.primaryDependentJob }}_Artifacts - checkDownloadedFiles: true - - powershell: eng/join-verticals.ps1 - /p:VerticalManifestsPath=$(Build.ArtifactStagingDirectory)/VerticalManifests - /p:MainVertical=${{ parameters.primaryDependentJob }} + /p:VerticalManifestsPath=$(Build.ArtifactStagingDirectory)/VerticalManifests /p:DotNetBuildPass=${{ parameters.dotNetBuildPass }} - /p:BuildId=$(Build.BuildId) - /p:AzureDevOpsToken=$(System.AccessToken) - /p:AzureDevOpsBaseUri=$(System.CollectionUri) - /p:AzureDevOpsProject=$(System.TeamProject) - /p:MainVerticalArtifactsFolder=$(Build.ArtifactStagingDirectory)/${{ parameters.primaryDependentJob }}_Artifacts + /p:VerticalArtifactsBaseFolder=$(Build.ArtifactStagingDirectory)/VerticalArtifacts /p:OutputFolder=${{ parameters.outputFolder }} - displayName: Join Verticals \ No newline at end of file + displayName: Join Verticals + workingDirectory: ${{ parameters.vmrPath }} +- task: CopyFiles@2 + displayName: Copy logs for upload + inputs: + SourceFolder: '$(Build.SourcesDirectory)/artifacts/log' + Contents: | + **/*.log + **/*.binlog + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log' + CleanTargetFolder: true diff --git a/src/SourceBuild/content/eng/join-verticals.proj b/src/SourceBuild/content/eng/join-verticals.proj index e085205fb67f..d812b0f14f18 100644 --- a/src/SourceBuild/content/eng/join-verticals.proj +++ b/src/SourceBuild/content/eng/join-verticals.proj @@ -12,27 +12,17 @@ - - - - - + - diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/AzureDevOpsClient.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/AzureDevOpsClient.cs deleted file mode 100644 index 17d4b2e859ce..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/AzureDevOpsClient.cs +++ /dev/null @@ -1,197 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using System; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Net.Http.Headers; -using System.Net.Http.Json; -using System.Text; -using System.Threading.Tasks; -using Task = System.Threading.Tasks.Task; - -namespace Microsoft.DotNet.UnifiedBuild.Tasks; - -public class AzureDevOpsClient : IDisposable -{ - private readonly HttpClient _httpClient; - private readonly TaskLoggingHelper _logger; - - private const string _azureDevOpsApiVersion = "7.1-preview.5"; - // download in 100 MB chunks - private const int _downloadBufferSize = 1024 * 1024 * 100; - private const int _httpTimeoutSeconds = 300; - - public AzureDevOpsClient( - string? azureDevOpsToken, - string azureDevOpsBaseUri, - string azureDevOpsProject, - TaskLoggingHelper logger) - { - - _logger = logger; - - _httpClient = new(new HttpClientHandler { CheckCertificateRevocationList = true }); - - _httpClient.BaseAddress = new Uri($"{azureDevOpsBaseUri}/{azureDevOpsProject}/_apis/"); - - _httpClient.Timeout = TimeSpan.FromSeconds(_httpTimeoutSeconds); - - if (!string.IsNullOrEmpty(azureDevOpsToken)) - { - _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( - "Basic", - Convert.ToBase64String(Encoding.UTF8.GetBytes($":{azureDevOpsToken}"))); - } - } - - /// - /// Downloads a build artifact as zip file - /// - public async Task DownloadArtifactZip(string buildId, string artifactName, string downloadPath, int retryCount) - { - var artifactInformation = await GetArtifactInformation(buildId, artifactName, retryCount); - string downloadUrl = artifactInformation.Resource.DownloadUrl; - - _logger.LogMessage(MessageImportance.High, $"Downloading artifact zip from {downloadUrl}"); - - try - { - using HttpResponseMessage httpResponse = await ExecuteApiCallWithRetry(downloadUrl, retryCount); - using Stream readStream = await httpResponse.Content.ReadAsStreamAsync(); - using FileStream writeStream = File.Create(downloadPath); - - await readStream.CopyToAsync(writeStream, _downloadBufferSize); - } - catch (Exception ex) - { - _logger.LogError($"Failed to download artifact zip: {ex.Message}"); - throw; - } - } - - public async Task DownloadSingleFileFromArtifact(string buildId, string artifactName, string itemId, string itemSubPath, string downloadPath, int retryCount) - { - try - { - var downloadFileUrl = $"build/builds/{buildId}/artifacts?artifactName={artifactName}&fileId={itemId}&fileName={itemSubPath}&api-version={_azureDevOpsApiVersion}"; - - _logger.LogMessage(MessageImportance.High, $"Downloading file {itemSubPath} from {downloadFileUrl}"); - - using HttpResponseMessage fileDownloadResponse = await ExecuteApiCallWithRetry(downloadFileUrl, retryCount); - using Stream readStream = await fileDownloadResponse.Content.ReadAsStreamAsync(); - using FileStream writeStream = File.Create(downloadPath); - - await readStream.CopyToAsync(writeStream, _downloadBufferSize); - } - catch (Exception ex) - { - _logger.LogError($"Failed to download file: {ex.Message}"); - throw; - } - } - - public async Task GetArtifactFilesInformation(string buildId, string artifactName, int retryCount) - { - var artifactInformation = await GetArtifactInformation(buildId, artifactName, retryCount); - string artifactId = artifactInformation.Resource.Data; - - var getManifestUrl = $"build/builds/{buildId}/artifacts?artifactName={artifactName}&fileId={artifactId}&fileName={artifactName}&api-version={_azureDevOpsApiVersion}"; - - _logger.LogMessage(MessageImportance.High, $"Getting {artifactName} artifact manifest"); - - try - { - using HttpResponseMessage httpResponse = await ExecuteApiCallWithRetry(getManifestUrl, retryCount); - - ArtifactFiles filesInformation = await httpResponse.Content.ReadFromJsonAsync() - ?? throw new ArgumentException($"Couldn't parse AzDo response {httpResponse.Content} to {nameof(ArtifactFiles)}"); - - return filesInformation; - } - catch (Exception ex) - { - _logger.LogError($"Failed to download file: {ex.Message}"); - throw; - } - } - - public async Task GetArtifactInformation(string buildId, string artifactName, int retryCount) - { - string relativeUrl = $"build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version={_azureDevOpsApiVersion}"; - - _logger.LogMessage(MessageImportance.High, $"Getting {artifactName} metadata from {relativeUrl}"); - - try - { - using HttpResponseMessage httpResponse = await ExecuteApiCallWithRetry(relativeUrl, retryCount); - - AzureDevOpsArtifactInformation artifactInformation = await httpResponse.Content.ReadFromJsonAsync() - ?? throw new ArgumentException($"Couldn't parse AzDo response {httpResponse.Content} to {nameof(AzureDevOpsArtifactInformation)}"); - - return artifactInformation; - } - catch(Exception ex) - { - _logger.LogError($"Failed to get artifact download URL: {ex.Message}"); - throw; - } - } - - private async Task ExecuteApiCallWithRetry(string relativeUrl, int retryCount) - { - int retriesRemaining = retryCount; - - while (true) - { - try - { - HttpResponseMessage httpResponse = await _httpClient.GetAsync(relativeUrl, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false); - - httpResponse.EnsureSuccessStatusCode(); - - return httpResponse; - } - catch (Exception ex) when (ex is HttpRequestException || ex is TaskCanceledException) - { - if (ex is HttpRequestException && ex.Message.Contains(((int)HttpStatusCode.NotFound).ToString())) - { - _logger.LogError($"Resource not found at {relativeUrl}: {ex.Message}"); - throw; - } - - if (ex is HttpRequestException && ex.Message.Contains(((int)HttpStatusCode.Unauthorized).ToString())) - { - _logger.LogError($"Failure to authenticate: {ex.Message}"); - throw; - } - - if (retriesRemaining <= 0) - { - _logger.LogError($"There was an error calling AzureDevOps API against URI '{relativeUrl}' " + - $"after {retryCount} attempts. Exception: {ex}"); - throw; - } - - _logger.LogWarning($"There was an error calling AzureDevOps API against URI against URI '{relativeUrl}'. " + - $"{retriesRemaining} attempts remaining. Exception: {ex.ToString()}"); - } - - --retriesRemaining; - await Task.Delay(5000); - } - } - - public void Dispose() - { - _httpClient.Dispose(); - } - - public record Blob(string Id, int Size); - public record ArtifactItem(string Path, Blob Blob); - public record ArtifactFiles(string ManifestFormat, ArtifactItem[] Items, string[] ManifestReferences); -} \ No newline at end of file diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/JoinVerticals.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/JoinVerticals.cs index 5490d550bf83..dd77d71ea108 100644 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/JoinVerticals.cs +++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/JoinVerticals.cs @@ -10,7 +10,6 @@ using System.Linq; using System.Threading; using System.Xml.Linq; -using static Microsoft.DotNet.UnifiedBuild.Tasks.AzureDevOpsClient; using Task = System.Threading.Tasks.Task; namespace Microsoft.DotNet.UnifiedBuild.Tasks; @@ -23,40 +22,11 @@ public class JoinVerticals : Microsoft.Build.Utilities.Task [Required] public required ITaskItem[] VerticalManifest { get; init; } - /// - /// Name of the main vertical that we'll take all artifacts from if they exist in this vertical, and at least one other vertical. - /// - [Required] - public required string MainVertical { get; init; } - - /// - /// Azure DevOps build id - /// - [Required] - public required string BuildId { get; init; } - - /// - /// Azure DevOps token, required scopes: "Build (read)", allowed to be empty when running in a public project - /// - public string? AzureDevOpsToken { get; set; } - - /// - /// Azure DevOps organization - /// - [Required] - public required string AzureDevOpsBaseUri { get; init; } - - /// - /// Azure DevOps project - /// - [Required] - public required string AzureDevOpsProject { get; init; } - /// /// Location of downloaded artifacts from the main vertical /// [Required] - public required string MainVerticalArtifactsFolder { get; init; } + public required string VerticalArtifactsBaseFolder { get; init; } /// /// Folder where packages and assets will be stored @@ -64,39 +34,30 @@ public class JoinVerticals : Microsoft.Build.Utilities.Task [Required] public required string OutputFolder { get; init; } - - private const string _artifactNameSuffix = "_Artifacts"; private const string _assetsFolderName = "assets"; private const string _packagesFolderName = "packages"; - private const int _retryCount = 10; + private const string _releaseFolderName = "Release"; public override bool Execute() - { - ExecuteAsync().GetAwaiter().GetResult(); - return !Log.HasLoggedErrors; - } - - private async Task ExecuteAsync() { List manifests = VerticalManifest.Select(xmlPath => BuildAssetsManifest.LoadFromFile(xmlPath.ItemSpec)).ToList(); BuildAssetsManifest mainVerticalManifest = manifests - .FirstOrDefault(manifest => StringComparer.OrdinalIgnoreCase.Equals(manifest.VerticalName, MainVertical)) - ?? throw new ArgumentException($"Couldn't find main vertical manifest {MainVertical} in vertical manifest list"); - - string mainVerticalName = mainVerticalManifest.VerticalName!; + .FirstOrDefault() + ?? throw new ArgumentException($"Vertical manifest list was empty"); - JoinVerticalsAssetSelector joinVerticalsAssetSelector = new JoinVerticalsAssetSelector(); + JoinVerticalsAssetSelector joinVerticalsAssetSelector = new(); List selectedVerticals = joinVerticalsAssetSelector.SelectAssetMatchingVertical(manifests).ToList(); var notMatchedAssets = selectedVerticals.Where(o => o.MatchType == AssetVerticalMatchType.NotSpecified).ToList(); - Log.LogMessage(MessageImportance.High, $"### {notMatchedAssets.Count()} Assets not properly matched to vertical: ###"); - foreach (var matchResult in notMatchedAssets) + if (notMatchedAssets.Count > 0) { - Log.LogMessage(MessageImportance.High, $"Asset: {matchResult.AssetId} -- Matched to: {matchResult.VerticalName}, Other verticals: {string.Join(", ", matchResult.OtherVerticals)}"); + Log.LogError($"### {notMatchedAssets.Count} Assets not properly matched to vertical: ###"); + foreach (var matchResult in notMatchedAssets) + { + Log.LogMessage(MessageImportance.High, $"Asset: {matchResult.AssetId} -- Matched to: {matchResult.VerticalName}, Other verticals: {string.Join(", ", matchResult.OtherVerticals)}"); + } } - - // save manifest and download all the assets string packagesOutputDirectory = Path.Combine(OutputFolder, _packagesFolderName); ForceDirectory(packagesOutputDirectory); @@ -109,20 +70,6 @@ private async Task ExecuteAsync() string manifestOutputPath = Path.Combine(OutputFolder, "MergedManifest.xml"); mergedManifest.Save(manifestOutputPath); - (AssetVerticalMatchResult matchResult, string fileName) figureOutFileName(AssetVerticalMatchResult matchResult) - { - string fileName = matchResult.Asset.AssetType switch - { - ManifestAssetType.Package => $"{matchResult.Asset.Id}.{matchResult.Asset.Version}.nupkg", - ManifestAssetType.Blob => matchResult.Asset.Id, - _ => throw new ArgumentException($"Unknown asset type {matchResult.Asset.AssetType}") - }; - return (matchResult, fileName); - } - - using var clientThrottle = new SemaphoreSlim(16, 16); - List downloadTasks = new(); - foreach (var matchResult in selectedVerticals.GroupBy(o => o.VerticalName).OrderByDescending(g => g.Count())) { string verticalName = matchResult.Key; @@ -137,136 +84,26 @@ private async Task ExecuteAsync() .Select(figureOutFileName) .ToList(); - // copy main vertical assets from the local already downloaded artifacts - if (StringComparer.OrdinalIgnoreCase.Equals(verticalName, mainVerticalName)) - { - var targetFolderPackages = Path.Combine(MainVerticalArtifactsFolder, _packagesFolderName); - downloadTasks.Add( - CopyMainVerticalAssets(targetFolderPackages, packagesOutputDirectory, assetListPackages) - ); - var targetFolderBlobs = Path.Combine(MainVerticalArtifactsFolder, _assetsFolderName); - downloadTasks.Add( - CopyMainVerticalAssets(targetFolderBlobs, assetsOutputDirectory, assetListPackages) - ); - continue; - } - - if (assetListPackages.Count > 0) - { - downloadTasks.Add( - DownloadArtifactFiles( - BuildId, - $"{verticalName}{_artifactNameSuffix}", - assetListPackages.Select(o => o.fileName).ToList(), - packagesOutputDirectory, - clientThrottle) - ); - } - - if (assetListBlobs.Count > 0) - { - downloadTasks.Add( - DownloadArtifactFiles( - BuildId, - $"{verticalName}{_artifactNameSuffix}", - assetListBlobs.Select(o => o.fileName).ToList(), - assetsOutputDirectory, - clientThrottle) - ); - } + CopyVerticalAssets(Path.Combine(VerticalArtifactsBaseFolder, verticalName, _packagesFolderName, _releaseFolderName), packagesOutputDirectory, assetListPackages); + CopyVerticalAssets(Path.Combine(VerticalArtifactsBaseFolder, verticalName, _assetsFolderName, _releaseFolderName), assetsOutputDirectory, assetListBlobs); } - await Task.WhenAll(downloadTasks); - } - - /// - /// Downloads specified packages and symbols from a specific build artifact and stores them in an output folder - /// - private async Task DownloadArtifactFiles( - string buildId, - string artifactName, - List fileNamesToDownload, - string outputDirectory, - SemaphoreSlim clientThrottle) - { - using AzureDevOpsClient azureDevOpsClient = new(AzureDevOpsToken, AzureDevOpsBaseUri, AzureDevOpsProject, Log); - - ArtifactFiles filesInformation = await azureDevOpsClient.GetArtifactFilesInformation(buildId, artifactName, _retryCount); + return !Log.HasLoggedErrors; - await Task.WhenAll(fileNamesToDownload.Select(async fileName => - await DownloadFileFromArtifact( - filesInformation, - artifactName, - azureDevOpsClient, - buildId, - fileName, - outputDirectory, - clientThrottle))); - } - private async Task DownloadFileFromArtifact( - ArtifactFiles artifactFilesMetadata, - string azureDevOpsArtifact, - AzureDevOpsClient azureDevOpsClient, - string buildId, - string manifestFile, - string destinationDirectory, - SemaphoreSlim clientThrottle) - { - try + static (AssetVerticalMatchResult matchResult, string fileName) figureOutFileName(AssetVerticalMatchResult matchResult) { - await clientThrottle.WaitAsync(); - - ArtifactItem fileItem; - - var matchingFilePaths = artifactFilesMetadata.Items.Where(f => Path.GetFileName(f.Path) == Path.GetFileName(manifestFile)); - - if (!matchingFilePaths.Any()) - { - throw new ArgumentException($"File {manifestFile} not found in source files."); - } - - if (matchingFilePaths.Count() > 1) - { - // Picking the first one until https://github.com/dotnet/source-build/issues/4596 is resolved - if (manifestFile.Contains("productVersion.txt")) - { - fileItem = matchingFilePaths.First(); - } - else - { - // For some files it's not enough to compare the filename because they have 2 copies in the artifact - // e.g. assets/Release/dotnet-sdk-*-win-x64.zip and assets/Release/Sdk/*/dotnet-sdk-*-win-x64.zip - // In this case take the one matching the full path from the manifest - fileItem = matchingFilePaths - .SingleOrDefault(f => f.Path.EndsWith(manifestFile) || f.Path.EndsWith(manifestFile.Replace("/", @"\"))) - ?? throw new ArgumentException($"File {manifestFile} not found in source files."); - } - } - else + string fileName = matchResult.Asset.AssetType switch { - fileItem = matchingFilePaths.Single(); - } - - string itemId = fileItem.Blob.Id; - string artifactSubPath = fileItem.Path; - - string destinationFilePath = Path.Combine(destinationDirectory, Path.GetFileName(manifestFile)); - - await azureDevOpsClient.DownloadSingleFileFromArtifact(buildId, azureDevOpsArtifact, itemId, artifactSubPath, destinationFilePath, _retryCount); - } - catch (Exception ex) - { - Log.LogError($"Failed to download file {manifestFile} from artifact {azureDevOpsArtifact}: {ex.Message}"); - throw; - } - finally - { - clientThrottle.Release(); + ManifestAssetType.Package => $"{matchResult.Asset.Id}.{matchResult.Asset.Version}.nupkg", + ManifestAssetType.Blob => matchResult.Asset.Id, + _ => throw new ArgumentException($"Unknown asset type {matchResult.Asset.AssetType}") + }; + return (matchResult, fileName); } } - private void ForceDirectory(string directory) + private static void ForceDirectory(string directory) { if (!Directory.Exists(directory)) { @@ -275,19 +112,27 @@ private void ForceDirectory(string directory) } /// - /// Copy all files from the source directory to the destination directory in a flat layout + /// Copy assets for a vertical from the source directory to the destination directory in a flat layout /// - private async Task CopyMainVerticalAssets(string sourceDirectory, string destinationDirectory, + private void CopyVerticalAssets(string sourceDirectory, string destinationDirectory, IEnumerable<(AssetVerticalMatchResult matchResult, string fileName)> assets) { - await Task.Yield(); - - var sourceFiles = Directory.EnumerateFiles(sourceDirectory, "*", SearchOption.AllDirectories); - foreach (var sourceFile in sourceFiles) + foreach (var sourceFile in assets) { - string destinationFilePath = Path.Combine(destinationDirectory, Path.GetFileName(sourceFile)); + string destinationFilePath = Path.Combine(destinationDirectory, Path.GetFileName(sourceFile.fileName)); Log.LogMessage(MessageImportance.High, $"Copying {sourceFile} to {destinationFilePath}"); - File.Copy(sourceFile, destinationFilePath, true); + + if (sourceFile.matchResult.Asset.AssetType == ManifestAssetType.Package) + { + string shippingSubdir = sourceFile.matchResult.Asset.NonShipping + ? "NonShipping" + : "Shipping"; + File.Copy(Path.Combine(sourceDirectory, shippingSubdir, sourceFile.matchResult.Asset.RepoOrigin ?? "", sourceFile.fileName), destinationFilePath, true); + } + else + { + File.Copy(Path.Combine(sourceDirectory, sourceFile.fileName), destinationFilePath, true); + } } } } diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/BuildAssetsManifest.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/BuildAssetsManifest.cs index 802c54b50307..6643eea48968 100644 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/BuildAssetsManifest.cs +++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/BuildAssetsManifest.cs @@ -147,7 +147,7 @@ public string? Version /// public bool NonShipping { - get { return GetAttribute(nameof(NonShipping)) == bool.TrueString; } + get { return GetAttribute(nameof(NonShipping))?.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase) ?? false; } set { SetAttribute(nameof(NonShipping), value.ToString(CultureInfo.InvariantCulture)); } } @@ -156,7 +156,7 @@ public bool NonShipping /// public bool DotNetReleaseShipping { - get { return GetAttribute(nameof(DotNetReleaseShipping)) == bool.TrueString; } + get { return GetAttribute(nameof(DotNetReleaseShipping))?.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase) ?? false; } set { SetAttribute(nameof(DotNetReleaseShipping), value.ToString(CultureInfo.InvariantCulture)); } } diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsAssetSelector.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsAssetSelector.cs index 103021dd0e32..957bbc93f8fb 100644 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsAssetSelector.cs +++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsAssetSelector.cs @@ -13,7 +13,6 @@ namespace Microsoft.DotNet.UnifiedBuild.Tasks.ManifestAssets public enum AssetVerticalMatchType { ExactMatch, - PriorityVerticals, NotSpecified } @@ -30,13 +29,6 @@ public class JoinVerticalsAssetSelector { private const string cAssetVisibilityExternal = "External"; - private JoinVerticalsConfig _config; - - public JoinVerticalsAssetSelector(JoinVerticalsConfig? config = null) - { - _config = config ?? JoinVerticalsConfig.GetDefaultConfig(); - } - // Temporary solution to exclude some assets from Unified Build private bool ExcludeAsset(AssetVerticalMatchResult assetVerticalMatch) { @@ -74,25 +66,22 @@ bool IsExternalAsset(ManifestAsset asset) { string assetId = assetGroup.Key; - int verticalsCount = assetGroup.Count(); var verticalNames = assetGroup.Select(o => o.manifest.VerticalName!).ToList(); - if (verticalsCount > 0) + + (AssetVerticalMatchType matchType, string verticalName) = SelectVerticalForAsset(verticalNames); + + AssetVerticalMatchResult assetVerticalMatch = new AssetVerticalMatchResult + { + AssetId = assetGroup.Key, + MatchType = matchType, + VerticalName = verticalName, + Asset = assetGroup.FirstOrDefault().asset, + OtherVerticals = assetGroup.Select(o => o.manifest.VerticalName!).Skip(1).ToList() + }; + + if (!ExcludeAsset(assetVerticalMatch)) { - (AssetVerticalMatchType matchType, string verticalName) = SelectVerticalForAsset(verticalNames); - - AssetVerticalMatchResult assetVerticalMatch = new AssetVerticalMatchResult - { - AssetId = assetGroup.Key, - MatchType = matchType, - VerticalName = verticalName, - Asset = assetGroup.FirstOrDefault(o => VerticalNameMatches(o.manifest.VerticalName, verticalName)).asset, - OtherVerticals = assetGroup.Select(o => o.manifest.VerticalName!).Where(o => !VerticalNameMatches(o, verticalName)).ToList() - }; - - if (!ExcludeAsset(assetVerticalMatch)) - { - yield return assetVerticalMatch; - } + yield return assetVerticalMatch; } } } @@ -105,12 +94,6 @@ bool IsExternalAsset(ManifestAsset asset) return (AssetVerticalMatchType.ExactMatch, verticalNames.Single()); } - // Apply general priority ordered list of primary verticals - if (verticalNames.Contains(_config.PriorityVertical, StringComparer.OrdinalIgnoreCase)) - { - return (AssetVerticalMatchType.PriorityVerticals, _config.PriorityVertical); - } - // Select first vertical from the list and report it as ambiguous match return (AssetVerticalMatchType.NotSpecified, verticalNames.First()); } diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsConfig.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsConfig.cs deleted file mode 100644 index 4dcfb6861489..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ManifestAssets/JoinVerticalsConfig.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#nullable enable - -using System.Collections.Generic; - -namespace Microsoft.DotNet.UnifiedBuild.Tasks.ManifestAssets -{ - public class JoinVerticalsConfig - { - public required string PriorityVertical { get; init; } - - public static JoinVerticalsConfig GetDefaultConfig() - { - JoinVerticalsConfig joinVerticalsConfig = new JoinVerticalsConfig - { - PriorityVertical = "Windows_x64" - }; - return joinVerticalsConfig; - } - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Models/AzureDevOpsArtifactInformation.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Models/AzureDevOpsArtifactInformation.cs deleted file mode 100644 index 42341d78194d..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Models/AzureDevOpsArtifactInformation.cs +++ /dev/null @@ -1,9 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Microsoft.DotNet.UnifiedBuild.Tasks; - -public record AzureDevOpsArtifactInformation(int Id, string Name, string Source, AzdoArtifactResources Resource); -public record AzdoArtifactResources(string Type, string Data, AzdoArtifactProperties Properties, string Url, string DownloadUrl); -public record AzdoArtifactProperties(string RootId, string Artifactsize, string HashType, string DomainId); \ No newline at end of file diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.props b/src/SourceBuild/content/repo-projects/Directory.Build.props index 0555ceeb8792..8094987951d1 100644 --- a/src/SourceBuild/content/repo-projects/Directory.Build.props +++ b/src/SourceBuild/content/repo-projects/Directory.Build.props @@ -59,6 +59,18 @@ $([MSBuild]::NormalizeDirectory('$(ArtifactsLogDir)', '$(RepositoryName)')) $([MSBuild]::NormalizeDirectory('$(PackageReportDir)', '$(RepositoryName)')) + + Windows_x64 + + + true @@ -114,9 +126,9 @@ $(CommonArgs) /p:SourceBuiltAssetManifestsDir=$(RepoAssetManifestsDir) - $(CommonArgs) /p:DefaultArtifactVisibility=Vertical + Vertical - $(CommonArgs) /p:DefaultArtifactVisibility=Vertical + Vertical diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.targets b/src/SourceBuild/content/repo-projects/Directory.Build.targets index 9a756269b4e9..948a13728f66 100644 --- a/src/SourceBuild/content/repo-projects/Directory.Build.targets +++ b/src/SourceBuild/content/repo-projects/Directory.Build.targets @@ -38,9 +38,14 @@ $(CommonArgs) /p:PortableBuild=$(PortableBuild) $(CommonArgs) /p:RuntimeOS=$(RuntimeOS) $(CommonArgs) /p:BaseOS=$(BaseOS) + $(CommonArgs) /p:DefaultArtifactVisibility=$(DefaultArtifactVisibility) $(CommonArgs) /p:DotNetBuildTests=true + + $(BuildArgs) /p:EnableDefaultRidSpecificArtifacts=$(EnableDefaultRidSpecificArtifacts) + + $(BuildArgs) /p:AllowEmptySignList=true diff --git a/src/SourceBuild/content/repo-projects/runtime.proj b/src/SourceBuild/content/repo-projects/runtime.proj index 7f4553a8be70..70ef96bb813b 100644 --- a/src/SourceBuild/content/repo-projects/runtime.proj +++ b/src/SourceBuild/content/repo-projects/runtime.proj @@ -37,17 +37,9 @@ true - - - true - $(BuildArgs) /p:EnableDefaultRidSpecificArtifacts=true + + + false diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVertialsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVerticalsTests.cs similarity index 79% rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVertialsTests.cs rename to src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVerticalsTests.cs index 2785ebb7cef1..50baa6399135 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVertialsTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVerticalsTests.cs @@ -138,42 +138,6 @@ private void PrintTestSelectionResult(IReadOnlyCollection o.MatchType == AssetVerticalMatchType.PriorityVerticals) - .GroupBy(o => o.VerticalName) - .OrderByDescending(o => o.Count()) - .ToList(); - if (ambiguousAssetsByVertical.Any()) - { - foreach (var verticalAssets in ambiguousAssetsByVertical) - { - if (StringComparer.OrdinalIgnoreCase.Equals(verticalAssets.Key, "Windows_x64")) - { - continue; - } - - OutputHelper.WriteLine(string.Empty); - OutputHelper.WriteLine($"Ambiguous assets stats for vertical: {verticalAssets.Key}"); - var otherVerticalGroups = verticalAssets - .SelectMany(a => a.OtherVerticals) - .GroupBy(v => v) - .Select(g => new { Vertical = g.Key, Count = g.Count() }) - .OrderByDescending(x => x.Count); - - foreach (var group in otherVerticalGroups) - { - OutputHelper.WriteLine($" - {group.Vertical}: {group.Count}"); - } - OutputHelper.WriteLine($"Ambiguous assets:"); - foreach (var assetSelectionInfo in verticalAssets) - { - OutputHelper.WriteLine($"{assetSelectionInfo.AssetId}"); - } - } - } } #endregion diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml index 2efdbd7a1b54..39708206df7d 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml index 05da99cdd0d5..1af9f3face8d 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml @@ -1,10 +1,88 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml index 02109574620a..23fade63128e 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml @@ -1,8 +1,86 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml index 48d559b7ccb2..891d562fcc74 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml index 51194dd5427f..446c379827a6 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml @@ -1,1060 +1,166 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml index a16e633d8e7b..b33101ab8526 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml @@ -1,1072 +1,178 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml index c56438d04e97..283efa7f7e6a 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml @@ -1,1074 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml index 93d1eb99d29c..3a82f597ab82 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml index a846712dfe14..e6f6d2c45db2 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml index c0b80c8aea75..728c24eb6c12 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml index 2b2b9c945c33..90b480c20fb7 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml index 5c94f390bcc6..7d61e014b24f 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml @@ -1,1096 +1,188 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml index c8bad0311451..739d2deaa716 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml @@ -1,1128 +1,236 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml index c84b06be730f..9df46ce14ad4 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml @@ -1,1144 +1,236 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml index 5359a77f25ad..e2b2fe5fa01d 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml index b257a17c5643..fd0470eff888 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml @@ -1,26 +1,104 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml index 362c704929ea..cac0e762dd6c 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml @@ -1,226 +1,82 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml index 7f5037845eb1..7c873637d02b 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml @@ -1,244 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml index e4e10bc0ee1d..e5d5311e1d54 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml @@ -1,244 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml index 4bd3b49aa02f..2ccc55c13b09 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml @@ -1,8 +1,86 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml index 54d1d65c124d..99bb5fff26b8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml @@ -1,8 +1,86 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml index 09628aea8797..ba69967004b8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml index f1b4804b9c46..73db9d5398c8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml @@ -1,1106 +1,212 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml index f278d918a078..834d9a295ab3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml @@ -1,1106 +1,212 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml index 1f68212db407..fdbbedf51e31 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml index ffab7c74e457..a617832561b1 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml index ef0d4bd380b5..950784c13377 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml index 70ca742ba670..d92da563e57a 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml @@ -1,4 +1,82 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml index 1e3d7e7d3c95..ba70fc451d41 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml @@ -1,1206 +1,246 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml index a8b144d83426..02375eb78269 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml @@ -1,1224 +1,1228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml index 523023e942cd..9ff5e1207815 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml @@ -1,20 +1,19 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml index 86f7afdb29da..de162ba5b0ec 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml @@ -1,1196 +1,236 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml index 86b2debf0860..2e447dd2f750 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml index e4ba9d57df2f..979902a781d0 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml index a811eeb19feb..3adcef1629cf 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml index 627cfe2786a1..e0fb422fb1b3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml @@ -1,14 +1,92 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml index 11d83e5d6014..05401ceaf007 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml index 5c089366f127..2674452860f1 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml index 138c27aa20c9..f34e1efa8532 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml +++ b/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml @@ -1,6 +1,84 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file