diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index f6d09760772a26..6d35d58a675e1a 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -174,7 +174,7 @@ jobs: - template: /eng/common/${{ parameters.templatePath }}/steps/enable-internal-sources.yml - - ${{ if in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator') }}: + - ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), not(in(parameters.hostedOs, 'linux', 'windows'))) }}: - script: $(Build.SourcesDirectory)/eng/common/native/install-dependencies.sh ${{ parameters.osGroup }} displayName: Install Build Dependencies @@ -237,7 +237,7 @@ jobs: displayName: Disk Usage after Build condition: always() - # If intended to send extra steps after regular build add them here. + # If intended to send extra steps after regular build add them here. - ${{ if ne(parameters.postBuildSteps,'') }}: - ${{ each postBuildStep in parameters.postBuildSteps }}: - ${{ if ne(postBuildStep.template, '') }}: diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml index d8c7b3469ac7aa..ea9ea44d1a5c76 100644 --- a/eng/pipelines/common/xplat-setup.yml +++ b/eng/pipelines/common/xplat-setup.yml @@ -176,11 +176,11 @@ jobs: os: linux # OSX Public Build Pool (we don't have on-prem OSX BuildPool). - ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), eq(variables['System.TeamProject'], 'public')) }}: + ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), not(in(parameters.jobParameters.hostedOs, 'linux', 'windows')), eq(variables['System.TeamProject'], 'public')) }}: vmImage: 'macos-15' # Official build OSX pool - ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), ne(variables['System.TeamProject'], 'public')) }}: + ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), not(in(parameters.jobParameters.hostedOs, 'linux', 'windows')), ne(variables['System.TeamProject'], 'public')) }}: name: "Azure Pipelines" vmImage: 'macos-latest-internal' os: macOS diff --git a/eng/pipelines/installer/run-test-job.yml b/eng/pipelines/installer/run-test-job.yml new file mode 100644 index 00000000000000..bae83f5a3767cc --- /dev/null +++ b/eng/pipelines/installer/run-test-job.yml @@ -0,0 +1,81 @@ +parameters: + buildConfig: '' + osGroup: '' + osSubgroup: '' + archType: '' + targetRid: '' + hostedOs: '' + timeoutInMinutes: 150 + pool: '' + condition: true + shouldContinueOnError: false + variables: {} + dependsOn: [] + dependsOnGlobalBuilds: [] + helixQueues: [] + buildArtifactName: '' + testArtifactName: '' + templatePath: 'templates' + +jobs: + - template: /eng/common/${{ parameters.templatePath }}/job/job.yml + parameters: + enablePublishBuildArtifacts: true + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + condition: and(succeeded(), ${{ parameters.condition }}) + helixRepo: dotnet/runtime + displayName: ${{ format('Installer Test {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + ${{ if eq(parameters.hostedOs, '') }}: + name: ${{ format('installer_test_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + ${{ if ne(parameters.hostedOs, '') }}: + name: ${{ format('installer_test_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.hostedOs, parameters.buildConfig) }} + + pool: ${{ parameters.pool }} + + ${{ if eq(parameters.osSubGroup, '_musl') }}: + disableComponentGovernance: true + + dependsOn: + - ${{ each build in parameters.dependsOn }}: + - ${{ build }} + - ${{ each globalBuild in parameters.dependsOnGlobalBuilds }}: + - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(globalBuild.buildConfig, parameters.buildConfig), globalBuild.nameSuffix) }} + + workspace: + clean: all + + variables: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - group: DotNet-HelixApi-Access + - group: AzureDevOps-Artifact-Feeds-Pats + + - ${{ parameters.variables }} + + steps: + - checkout: self + clean: true + fetchDepth: $(checkoutFetchDepth) + fetchTags: false + + - template: /eng/common/${{ parameters.templatePath }}/steps/enable-internal-sources.yml + + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + unpackFolder: $(Build.SourcesDirectory)/artifacts/bin + artifactFileName: '${{ parameters.buildArtifactName }}$(archiveExtension)' + artifactName: '${{ parameters.buildArtifactName }}' + displayName: 'unified artifacts' + + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + unpackFolder: $(Build.SourcesDirectory)/artifacts/tests + artifactFileName: '${{ parameters.testArtifactName }}$(archiveExtension)' + artifactName: '${{ parameters.testArtifactName }}' + displayName: 'installer test artifacts' + + - template: /eng/pipelines/installer/helix.yml + parameters: + osGroup: ${{ parameters.osGroup }} + archType: ${{ parameters.archType }} + helixQueues: ${{ parameters.helixQueues }} + creator: dotnet-bot diff --git a/eng/pipelines/libraries/run-test-job.yml b/eng/pipelines/libraries/run-test-job.yml index 75f35341da2d97..e0fcd4f37c55e8 100644 --- a/eng/pipelines/libraries/run-test-job.yml +++ b/eng/pipelines/libraries/run-test-job.yml @@ -11,6 +11,7 @@ parameters: interpreter: '' timeoutInMinutes: 150 pool: '' + hostedOs: '' runtimeVariant: '' testScope: '' helixQueues: [] @@ -91,7 +92,7 @@ jobs: - template: /eng/common/${{ parameters.templatePath }}/steps/enable-internal-sources.yml - - ${{ if in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator') }}: + - ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), not(in(parameters.hostedOs, 'linux', 'windows'))) }}: - script: $(Build.SourcesDirectory)/eng/common/native/install-dependencies.sh ${{ parameters.osGroup }} displayName: Install Build Dependencies diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 9af74955c577b2..1c316128365f2f 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -250,7 +250,7 @@ extends: - windows_x64 jobParameters: nameSuffix: CoreCLR_Libraries - buildArgs: -s clr+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true + buildArgs: -s clr+libs+libs.tests+host+packs -rc Release -c $(_BuildConfig) -hc Release /p:ArchiveTests=true timeoutInMinutes: 120 postBuildSteps: - template: /eng/pipelines/common/upload-artifact-step.yml @@ -270,6 +270,15 @@ extends: archiveExtension: $(archiveExtension) tarCompression: $(tarCompression) artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) + - template: /eng/pipelines/common/upload-artifact-step.yml + parameters: + rootFolder: $(Build.SourcesDirectory)/artifacts/tests + includeRootFolder: false + archiveType: $(archiveType) + archiveExtension: $(archiveExtension) + tarCompression: $(tarCompression) + artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) + displayName: Installer Test Assets condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), @@ -284,7 +293,7 @@ extends: - windows_x86 jobParameters: nameSuffix: CoreCLR_Libraries - buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true + buildArgs: -s clr+libs+libs.tests+host+packs -c $(_BuildConfig) -hc $(debugOnPrReleaseOnRolling) /p:ArchiveTests=true timeoutInMinutes: 120 postBuildSteps: - template: /eng/pipelines/common/upload-artifact-step.yml @@ -304,6 +313,15 @@ extends: archiveExtension: $(archiveExtension) tarCompression: $(tarCompression) artifactName: CoreCLR_Libraries_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) + - template: /eng/pipelines/common/upload-artifact-step.yml + parameters: + rootFolder: $(Build.SourcesDirectory)/artifacts/tests + includeRootFolder: false + archiveType: $(archiveType) + archiveExtension: $(archiveExtension) + tarCompression: $(tarCompression) + artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) + displayName: Installer Test Assets condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), @@ -322,7 +340,7 @@ extends: - osx_x64 jobParameters: nameSuffix: CoreCLR_Libraries - buildArgs: -s clr+libs -c $(_BuildConfig) + buildArgs: -s clr+libs+host+packs -c $(_BuildConfig) -hc $(debugOnPrReleaseOnRolling) timeoutInMinutes: 120 postBuildSteps: - template: /eng/pipelines/common/upload-artifact-step.yml @@ -334,6 +352,15 @@ extends: tarCompression: $(tarCompression) artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) displayName: Build Assets + - template: /eng/pipelines/common/upload-artifact-step.yml + parameters: + rootFolder: $(Build.SourcesDirectory)/artifacts/tests + includeRootFolder: false + archiveType: $(archiveType) + archiveExtension: $(archiveExtension) + tarCompression: $(tarCompression) + artifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) + displayName: Installer Test Assets condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), @@ -1449,69 +1476,83 @@ extends: eq(variables['isRollingBuild'], true)) # - # Installer Build and Test - # These are always built since they only take like 15 minutes - # we expect these to be done before we finish libraries or coreclr testing. + # Installer Test # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml + jobTemplate: /eng/pipelines/installer/run-test-job.yml buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - windows_x86 + helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml + jobParameters: + dependsOnGlobalBuilds: + - nameSuffix: CoreCLR_Libraries + buildConfig: release + buildArtifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release + testArtifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release + timeoutInMinutes: 150 + condition: >- + or( + eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: - osx_x64 helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml jobParameters: - nameSuffix: Installer_Build_And_Test - buildArgs: -s host+packs -c $(_BuildConfig) -lc Release -rc Release + hostedOs: linux dependsOnGlobalBuilds: - nameSuffix: CoreCLR_Libraries buildConfig: release - preBuildSteps: - - template: /eng/pipelines/common/download-artifact-step.yml - parameters: - artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release - artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release$(archiveExtension) - unpackFolder: $(Build.SourcesDirectory)/artifacts/bin - displayName: 'unified artifacts' + buildArtifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release + testArtifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release timeoutInMinutes: 150 - postBuildSteps: - - template: /eng/pipelines/installer/helix.yml - parameters: - creator: dotnet-bot - condition: + condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml + jobTemplate: /eng/pipelines/installer/run-test-job.yml buildConfig: release platforms: - windows_x64 - - osx_arm64 - linux_x64 helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml jobParameters: - nameSuffix: Installer_Build_And_Test - buildArgs: -s host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} -rc Release dependsOnGlobalBuilds: - nameSuffix: CoreCLR_Libraries buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - preBuildSteps: - - template: /eng/pipelines/common/download-artifact-step.yml - parameters: - artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) - artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)$(archiveExtension) - unpackFolder: $(Build.SourcesDirectory)/artifacts/bin - displayName: 'unified artifacts' + buildArtifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) + testArtifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) timeoutInMinutes: 150 - postBuildSteps: - - template: /eng/pipelines/installer/helix.yml - parameters: - creator: dotnet-bot - condition: + condition: >- + or( + eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/run-test-job.yml + buildConfig: release + platforms: + - osx_arm64 + helixQueuesTemplate: /eng/pipelines/installer/helix-queues-setup.yml + jobParameters: + hostedOs: linux + dependsOnGlobalBuilds: + - nameSuffix: CoreCLR_Libraries + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + buildArtifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) + testArtifactName: Installer_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) + timeoutInMinutes: 150 + condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) @@ -1880,6 +1921,7 @@ extends: jobParameters: testScope: innerloop liveRuntimeBuildConfig: checked + hostedOs: linux unifiedArtifactsName: Libraries_CheckedCoreCLR_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) helixArtifactsName: Libraries_CheckedCoreCLR_TestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) unifiedBuildNameSuffix: Libraries_CheckedCoreCLR