Add runtimelab.yml for dotnet/runtimelab experiments CI and build infrastructure...
authorJose Perez Rodriguez <joperezr@microsoft.com>
Wed, 22 Jul 2020 17:49:22 +0000 (10:49 -0700)
committerGitHub <noreply@github.com>
Wed, 22 Jul 2020 17:49:22 +0000 (10:49 -0700)
* Add runtimelab.yml for dotnet/runtimelab experiments CI and build infrastructure

* rename one of the ymls based on feedback

12 files changed:
eng/Subsets.props
eng/pipelines/common/templates/runtimes/build-test-job.yml
eng/pipelines/common/templates/runtimes/run-test-job.yml
eng/pipelines/libraries/build-job.yml
eng/pipelines/libraries/prepare-for-bin-publish.yml [new file with mode: 0644]
eng/pipelines/libraries/run-test-job.yml
eng/pipelines/runtimelab.yml [new file with mode: 0644]
eng/pipelines/runtimelab/runtimelab-post-build-steps.yml [new file with mode: 0644]
src/installer/corehost/build.proj [deleted file]
src/installer/corehost/corehost.proj [new file with mode: 0644]
src/libraries/libraries-packages.proj
src/tests/Interop/ICustomMarshaler/Primitives/ICustomMarshaler_TargetWindows.csproj

index fa72f142f0c5cdf2a5a1a6f5885eadccc4e98bde..958389db150f6578456e43f5c1f9aa04f7d95e93 100644 (file)
 
   <!-- Installer sets -->
   <ItemGroup Condition="$(_subset.Contains('+corehost+'))">
-    <CorehostProjectToBuild Include="$(InstallerProjectRoot)corehost\build.proj" SignPhase="Binaries" />
+    <CorehostProjectToBuild Include="$(InstallerProjectRoot)corehost\corehost.proj" SignPhase="Binaries" />
     <ProjectToBuild Include="@(CorehostProjectToBuild)" BuildInParallel="true" Pack="true" Category="installer" />
   </ItemGroup>
 
index 0f3c188d20e89a341f7c5054537cb3ff0d65aedf..56fa8dffddc1b7b51673a9cd7a049a36af06c243 100644 (file)
@@ -22,6 +22,7 @@ parameters:
   runtimeFlavor: 'coreclr'
   runtimeFlavorDisplayName: 'CoreCLR'
   runtimeVariant: ''
+  dependsOn: []
 
 ### Build managed test components (native components are getting built as part
 ### of the the product build job).
@@ -63,10 +64,13 @@ jobs:
     # See https://docs.microsoft.com/azure/devops/pipelines/process/conditions
     condition: and(succeeded(), ${{ parameters.condition }})
 
+    ${{ if ne(parameters.dependsOn[0], '') }}:
+      dependsOn: ${{ parameters.dependsOn }}
+
     # TODO: Build of managed test components currently depends on the corresponding build job
     # because it needs System.Private.Corelib; we should be able to remove this dependency
     # by switching over to using reference assembly.
-    ${{ if ne(parameters.stagedBuild, true) }}:
+    ${{ if and(ne(parameters.stagedBuild, true), eq(parameters.dependsOn[0], '')) }}:
       dependsOn:
       - ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(parameters.liveRuntimeBuildConfig, parameters.buildConfig)) }}
       - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
index 39616a833b0e4c743b2228feffb6a5148bd83237..4d93701584fe620120705baf4a26d2e4e6e6cce4 100644 (file)
@@ -20,6 +20,7 @@ parameters:
   pool: ''
   runtimeFlavor: 'coreclr'
   runtimeFlavorDisplayName: 'CoreCLR'
+  dependsOn: []
 
 ### Test run job
 
@@ -47,15 +48,19 @@ jobs:
     ${{ if eq(variables['System.TeamProject'], 'internal') }}:
       continueOnError: true
 
-    dependsOn:
-    - ${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
-      - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}'
-    - ${{ if notIn(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
-      - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}'
-    - ${{ if ne(parameters.stagedBuild, true) }}:
-      - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
-      - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
-        - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
+    ${{ if ne(parameters.dependsOn[0], '') }}:
+      dependsOn: ${{ parameters.dependsOn }}
+
+    ${{ if eq(parameters.dependsOn[0], '') }}:
+      dependsOn:
+      - ${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
+        - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}'
+      - ${{ if notIn(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
+        - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}'
+      - ${{ if ne(parameters.stagedBuild, true) }}:
+        - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+        - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
+          - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
 
     # Compute job name from template parameters
     ${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
index 51dcb37ff23face3cba1f975e7437f830560cd98..f4b02cf062158d45dbbb4fa3768ba4567a1508e3 100644 (file)
@@ -99,55 +99,9 @@ jobs:
             displayName: Disk Usage after Build
 
         - ${{ if eq(parameters.runTests, false) }}:
-          - ${{ if ne(parameters.isOfficialBuild, true) }}:          
-            - task: CopyFiles@2
-              displayName: Prepare testhost folder to publish
-              inputs:
-                sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/testhost
-                targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/testhost
-
-            - task: CopyFiles@2
-              displayName: Prepare runtime folder to publish
-              inputs:
-                sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/runtime
-                targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/runtime
-
-            - task: CopyFiles@2
-              displayName: Prepare ref folder to publish
-              inputs:
-                sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref
-                targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref
-
-          - task: CopyFiles@2
-            displayName: Prepare shared framework ref assemblies to publish
-            inputs:
-              sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
-              targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app
-
-          - task: CopyFiles@2
-            displayName: Prepare shared framework runtime folder to publish
-            inputs:
-              sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
-              targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg
-
-          - task: CopyFiles@2
-            displayName: Prepare docs folder to publish
-            inputs:
-              sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/docs
-              targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/docs
-
-          - task: CopyFiles@2
-            displayName: Prepare native folder to publish
-            inputs:
-              sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
-              targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native
-
-          - task: CopyFiles@2
-            displayName: Prepare artifacts packages folder to publish
-            inputs:
-              sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
-              targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
-            condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))
+          - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
+            parameters:
+              isOfficialBuild: ${{ parameters.isOfficialBuild }}
 
           - template: /eng/pipelines/common/upload-artifact-step.yml
             parameters:
diff --git a/eng/pipelines/libraries/prepare-for-bin-publish.yml b/eng/pipelines/libraries/prepare-for-bin-publish.yml
new file mode 100644 (file)
index 0000000..fa71bea
--- /dev/null
@@ -0,0 +1,55 @@
+# Steps used to prepare the Artifacts Staging Directory with required files for
+# executing libraries tests as well as shared framework assets
+parameters:
+  isOfficialBuild: ''
+
+steps:
+  - ${{ if ne(parameters.isOfficialBuild, true) }}:
+    - task: CopyFiles@2
+      displayName: Prepare testhost folder to publish
+      inputs:
+        sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/testhost
+        targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/testhost
+
+    - task: CopyFiles@2
+      displayName: Prepare runtime folder to publish
+      inputs:
+        sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/runtime
+        targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/runtime
+
+    - task: CopyFiles@2
+      displayName: Prepare ref folder to publish
+      inputs:
+        sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref
+        targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref
+
+  - task: CopyFiles@2
+    displayName: Prepare shared framework ref assemblies to publish
+    inputs:
+      sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
+      targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app
+
+  - task: CopyFiles@2
+    displayName: Prepare docs folder to publish
+    inputs:
+      sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/docs
+      targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/docs
+
+  - task: CopyFiles@2
+    displayName: Prepare shared framework runtime folder to publish
+    inputs:
+      sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
+      targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg
+  
+  - task: CopyFiles@2
+    displayName: Prepare native folder to publish
+    inputs:
+      sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
+      targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native
+  
+  - task: CopyFiles@2
+    displayName: Prepare artifacts packages folder to publish
+    inputs:
+      sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
+      targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
+    condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))
index 74bc7da3d73e3743d2fc7b3ff2f0d0776f448228..6c5e397d4dd09a0dfabbe79e6591da8aad63fd57 100644 (file)
@@ -22,6 +22,7 @@ parameters:
   # stress modes that each test will be run with. This is the same usage as 'testGroup' in
   # eng/pipelines/common/templates/runtimes/run-test-job.yml.
   coreclrTestGroup: ''
+  dependsOn: []
 
 jobs:
   - template: /eng/pipelines/libraries/base-job.yml
@@ -51,13 +52,16 @@ jobs:
         testDisplayName: ${{ parameters.runtimeFlavor }}_interpreter_${{ parameters.liveRuntimeBuildConfig }}
 
       dependsOn:
-      - ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
-        - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
-        # tests are built as part of product build
-        - ${{ if or(ne(parameters.archType, parameters.dependsOnTestArchitecture), ne(parameters.buildConfig, parameters.dependsOnTestBuildConfiguration)) }}:
-          - ${{ format('libraries_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
-      - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
-        - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
+      - ${{ if ne(parameters.dependsOn[0], '') }}:
+        - ${{ parameters.dependsOn }}
+      - ${{ if eq(parameters.dependsOn[0], '') }}:
+        - ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
+          - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+          # tests are built as part of product build
+          - ${{ if or(ne(parameters.archType, parameters.dependsOnTestArchitecture), ne(parameters.buildConfig, parameters.dependsOnTestBuildConfiguration)) }}:
+            - ${{ format('libraries_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
+        - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
+          - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
 
       variables:
         - librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
diff --git a/eng/pipelines/runtimelab.yml b/eng/pipelines/runtimelab.yml
new file mode 100644 (file)
index 0000000..6f00e77
--- /dev/null
@@ -0,0 +1,185 @@
+# Setting batch to true, triggers one build at a time.
+# if there is a push while a build in progress, it will wait,
+# until the running build finishes, and produce a build with all the changes
+# that happened during the last build.
+trigger:
+  batch: true
+  branches:
+    include:
+    # Add Experiment branch here
+  paths:
+    include:
+    - '*'
+    - docs/manpages/*
+    exclude:
+    - eng/Version.Details.xml
+    - .github/*
+    - docs/*
+    - CODE-OF-CONDUCT.md
+    - CONTRIBUTING.md
+    - LICENSE.TXT
+    - PATENTS.TXT
+    - README.md
+    - SECURITY.md
+    - THIRD-PARTY-NOTICES.TXT
+
+pr:
+  branches:
+    include:
+    # Add Experiment branch here
+  paths:
+    include:
+    - '*'
+    - docs/manpages/*
+    exclude:
+    - eng/Version.Details.xml
+    - .github/*
+    - docs/*
+    - CODE-OF-CONDUCT.md
+    - CONTRIBUTING.md
+    - LICENSE.TXT
+    - PATENTS.TXT
+    - README.md
+    - SECURITY.md
+    - THIRD-PARTY-NOTICES.TXT
+
+variables:
+  - template: /eng/pipelines/common/variables.yml
+
+jobs:
+#
+# Checkout repository
+#
+- template: /eng/pipelines/common/checkout-job.yml
+
+#
+# Build with Debug config and Checked runtimeConfiguration
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/global-build-job.yml
+    buildConfig: Checked
+    platforms:
+    - Linux_x64
+    - Windows_NT_x64
+    jobParameters:
+      testGroup: innerloop
+      buildArgs: -s clr+libs+installer -c debug -runtimeConfiguration Checked
+      extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+
+#
+# Build with Release config and Release runtimeConfiguration
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/global-build-job.yml
+    buildConfig: Release
+    platforms:
+    - Linux_x64
+    - Windows_NT_x64
+    jobParameters:
+      testGroup: innerloop
+      buildArgs: -s clr+libs+libs.tests+installer -c $(_BuildConfig) /p:ArchiveTests=true
+      extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+      extraStepsParameters:
+        uploadTests: true
+
+#
+# Build with Release allConfigurations to produce packages
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/global-build-job.yml
+    buildConfig: release
+    platforms:
+    - Windows_NT_x64
+    jobParameters:
+      testGroup: innerloop
+      nameSuffix: All_Configurations
+      buildArgs: -s libs -c $(_BuildConfig) -allConfigurations
+
+#
+# CoreCLR Test builds using live libraries release build
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+    buildConfig: Checked
+    platforms:
+    - Linux_x64
+    jobParameters:
+      testGroup: innerloop
+      liveLibrariesBuildConfig: Release
+      dependsOn:
+      - build_Linux_x64_Checked_
+      - build_Linux_x64_Release_
+
+#
+# CoreCLR Test executions using live libraries
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+    buildConfig: Checked
+    platforms:
+    - Linux_x64
+    helixQueueGroup: pr
+    helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+    jobParameters:
+      testGroup: innerloop
+      liveLibrariesBuildConfig: Release
+      dependsOn:
+      - coreclr_common_test_build_p0_AnyOS_AnyCPU_Checked
+
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+    buildConfig: Checked
+    platforms:
+    - Windows_NT_x64
+    helixQueueGroup: pr
+    helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+    jobParameters:
+      testGroup: innerloop
+      liveLibrariesBuildConfig: Release
+      dependsOn:
+      - coreclr_common_test_build_p0_AnyOS_AnyCPU_Checked
+      - build_Windows_NT_x64_Checked_
+      - build_Windows_NT_x64_Release_
+
+#
+# Libraries Release Test Execution against a release coreclr runtime
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/libraries/run-test-job.yml
+    buildConfig: Release
+    platforms:
+    - Linux_x64
+    helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+    jobParameters:
+      isFullMatrix: false
+      isOfficialBuild: false
+      testScope: innerloop
+      liveRuntimeBuildConfig: Release
+      dependsOnTestBuildConfiguration: Release
+      dependsOnTestArchitecture: x64
+      dependsOn:
+      - build_Linux_x64_Release_
+
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/libraries/run-test-job.yml
+    buildConfig: Release
+    platforms:
+    - Windows_NT_x64
+    helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+    jobParameters:
+      isFullMatrix: false
+      isOfficialBuild: false
+      testScope: innerloop
+      liveRuntimeBuildConfig: Release
+      dependsOnTestBuildConfiguration: Release
+      dependsOnTestArchitecture: x64
+      dependsOn:
+      - build_Windows_NT_x64_Release_
diff --git a/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml b/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
new file mode 100644 (file)
index 0000000..e5fbcba
--- /dev/null
@@ -0,0 +1,59 @@
+parameters:
+  buildConfig: ''
+  archType: ''
+  osGroup: ''
+  osSubgroup: ''
+  uploadTests: false
+
+steps:
+  # Build coreclr native test output
+  - script: $(Build.SourcesDirectory)/src/coreclr/build-test$(scriptExt) skipstressdependencies skipmanaged skipgeneratelayout $(buildConfigUpper) ${{ parameters.archType }}
+    displayName: Build native test components
+
+  # Copy all build output into artifacts staging directory
+  - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
+
+  # Zip CoreCLR Build Output
+  - template: /eng/pipelines/common/upload-artifact-step.yml
+    parameters:
+      rootFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.$(buildConfigUpper)
+      archiveType: $(archiveType)
+      tarCompression: $(tarCompression)
+      includeRootFolder: false
+      archiveExtension: $(archiveExtension)
+      artifactName: CoreCLRProduct__${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+      displayName: 'CoreCLR product build'
+
+  # Zip Test Build
+  - ${{ if eq(parameters.uploadTests, true) }}:
+    - template: /eng/pipelines/common/upload-artifact-step.yml
+      parameters:
+        rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+        includeRootFolder: true
+        archiveType: $(archiveType)
+        archiveExtension: $(archiveExtension)
+        tarCompression: $(tarCompression)
+        artifactName: libraries_test_assets_${{ parameters.osGroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+        displayName: Test Assets
+
+  # Zip product native assets for use by Tests
+  - template: /eng/pipelines/common/upload-artifact-step.yml
+    parameters:
+      rootFolder: $(Build.SourcesDirectory)/artifacts/tests/coreclr/obj/${{ parameters.osGroup }}.${{ parameters.archType }}.$(buildConfigUpper)
+      includeRootFolder: false
+      archiveType: $(archiveType)
+      tarCompression: $(tarCompression)
+      archiveExtension: $(archiveExtension)
+      artifactName: CoreCLRNativeTestArtifacts_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+      displayName: 'native test components'
+
+  # Zip Libraries Build Output
+  - template: /eng/pipelines/common/upload-artifact-step.yml
+    parameters:
+      rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
+      archiveType: $(archiveType)
+      tarCompression: $(tarCompression)
+      includeRootFolder: false
+      archiveExtension: $(archiveExtension)
+      artifactName: libraries_bin_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+      displayName: Build Assets
diff --git a/src/installer/corehost/build.proj b/src/installer/corehost/build.proj
deleted file mode 100644 (file)
index 69927e8..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<Project>
-  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
-
-  <!--
-    Add basic project properties for NuGet restore, needed to import the SourceLink MSBuild tool
-    package's targets into the build.
-  -->
-  <PropertyGroup>
-    <TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
-  </PropertyGroup>
-
-  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
-
-  <!-- Target that builds dotnet, hostfxr and hostpolicy with the same version as what NetCoreApp will be built for
-       since the build produced artifacts should always version the same (even if they may not get used).
-  -->
-  <Target Name="Build"
-          DependsOnTargets="
-            GetProductVersions;
-            GenerateNativeVersionFile;
-            BuildCoreHostUnix;
-            BuildCoreHostWindows" />
-
-  <Target Name="BuildCoreHostUnix"
-          Condition="'$(TargetOS)' != 'Windows_NT'"
-          DependsOnTargets="GetLatestCommitHash;GenerateNativeVersionFile">
-    <PropertyGroup>
-      <CMakeBuildDir>$(IntermediateOutputRootPath)corehost\cmake\</CMakeBuildDir>
-
-      <BuildArgs>$(Configuration) $(TargetArchitecture) -apphostver "$(AppHostVersion)" -hostver "$(HostVersion)" -fxrver "$(HostResolverVersion)" -policyver "$(HostPolicyVersion)" -commithash "$(LatestCommit)" -os $(TargetOS)</BuildArgs>
-      <BuildArgs>$(BuildArgs) -cmakeargs "-DVERSION_FILE_PATH=$(NativeVersionFile)"</BuildArgs>
-      <BuildArgs Condition="'$(PortableBuild)' != 'true'">$(BuildArgs) -portablebuild=false</BuildArgs>
-      <BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) -cross</BuildArgs>
-      <BuildArgs Condition="'$(Compiler)' != ''">$(BuildArgs) $(Compiler)</BuildArgs>
-      <BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) $(CMakeArgs)</BuildArgs>
-      <BuildArgs>$(BuildArgs) -coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
-      <BuildArgs>$(BuildArgs) -nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
-    </PropertyGroup>
-
-    <!--
-      Use IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
-      warning in the macOS build when dsymutil tries to strip symbols.
-    -->
-    <Message Text="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" Importance="High"/>
-    <Exec Command="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
-  </Target>
-
-  <Target Name="BuildCoreHostWindows"
-          Condition="'$(TargetOS)' == 'Windows_NT'"
-          DependsOnTargets="GetLatestCommitHash">
-
-    <!-- Generate Version files -->
-    <ItemGroup>
-      <HostFiles Include="dotnet">
-       <FileDescription>.NET Host</FileDescription>
-      </HostFiles>
-      <HostFiles Include="hostfxr">
-        <FileDescription>.NET Host Resolver - $(HostResolverVersion)</FileDescription>
-      </HostFiles>
-      <HostFiles Include="hostpolicy">
-        <FileDescription>.NET Host Policy - $(HostPolicyVersion)</FileDescription>
-      </HostFiles>
-      <HostFiles Include="comhost">
-        <FileDescription>.NET COM Host</FileDescription>
-      </HostFiles>
-      <HostFiles Include="ijwhost">
-        <FileDescription>.NET IJW Host</FileDescription>
-      </HostFiles>
-      <HostFiles Include="nethost">
-        <FileDescription>.NET Component Host</FileDescription>
-      </HostFiles>
-    </ItemGroup>
-
-    <MSBuild
-      Projects="$(MSBuildProjectFullPath)"
-      Properties="
-        GenerateNativeVersionInfo=true;
-        AssemblyName=%(HostFiles.FileDescription);
-        NativeVersionFile=$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h"
-      Targets="GenerateNativeVersionFile"
-      Condition="
-        '$(IncrementalNativeBuild)' != 'true' or
-        !Exists('$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h')"/>
-
-    <PropertyGroup>
-      <BuildArgs>$(Configuration) $(TargetArchitecture) apphostver $(AppHostVersion) hostver $(HostVersion) fxrver $(HostResolverVersion) policyver $(HostPolicyVersion) commit $(LatestCommit) rid $(OutputRid)</BuildArgs>
-      <BuildArgs Condition="'$(PortableBuild)' == 'true'">$(BuildArgs) portable</BuildArgs>
-      <BuildArgs Condition="'$(IncrementalNativeBuild)' == 'true'">$(BuildArgs) incremental-native-build</BuildArgs>
-      <BuildArgs>$(BuildArgs) rootdir $(RepoRoot)</BuildArgs>
-      <BuildArgs>$(BuildArgs) coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
-      <BuildArgs>$(BuildArgs) nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
-    </PropertyGroup>
-
-    <!--
-      Run script that invokes Cmake to create VS files, and then calls msbuild to compile them. Use
-      IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
-      warning in the native build.
-    -->
-    <Message Text="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" Importance="High"/>
-    <Exec Command="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
-  </Target>
-
-  <Target Name="PrependWindowsHeaderIncludeToVersionHeaderFile"
-          Condition="'$(TargetOS)' == 'Windows_NT'"
-          AfterTargets="GenerateNativeVersionFile">
-    <PropertyGroup>
-      <IncludeStatementLine>#include &lt;Windows.h&gt;</IncludeStatementLine>
-      <NativeVersionFileContents>$([System.IO.File]::ReadAllText('$(NativeVersionFile)'))</NativeVersionFileContents>
-    </PropertyGroup>
-
-    <WriteLinesToFile
-      File="$(NativeVersionFile)"
-      Lines="$(IncludeStatementLine);$(NativeVersionFileContents)"
-      Overwrite="true" />
-  </Target>
-
-</Project>
diff --git a/src/installer/corehost/corehost.proj b/src/installer/corehost/corehost.proj
new file mode 100644 (file)
index 0000000..69927e8
--- /dev/null
@@ -0,0 +1,117 @@
+<Project>
+  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+  <!--
+    Add basic project properties for NuGet restore, needed to import the SourceLink MSBuild tool
+    package's targets into the build.
+  -->
+  <PropertyGroup>
+    <TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
+  </PropertyGroup>
+
+  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+  <!-- Target that builds dotnet, hostfxr and hostpolicy with the same version as what NetCoreApp will be built for
+       since the build produced artifacts should always version the same (even if they may not get used).
+  -->
+  <Target Name="Build"
+          DependsOnTargets="
+            GetProductVersions;
+            GenerateNativeVersionFile;
+            BuildCoreHostUnix;
+            BuildCoreHostWindows" />
+
+  <Target Name="BuildCoreHostUnix"
+          Condition="'$(TargetOS)' != 'Windows_NT'"
+          DependsOnTargets="GetLatestCommitHash;GenerateNativeVersionFile">
+    <PropertyGroup>
+      <CMakeBuildDir>$(IntermediateOutputRootPath)corehost\cmake\</CMakeBuildDir>
+
+      <BuildArgs>$(Configuration) $(TargetArchitecture) -apphostver "$(AppHostVersion)" -hostver "$(HostVersion)" -fxrver "$(HostResolverVersion)" -policyver "$(HostPolicyVersion)" -commithash "$(LatestCommit)" -os $(TargetOS)</BuildArgs>
+      <BuildArgs>$(BuildArgs) -cmakeargs "-DVERSION_FILE_PATH=$(NativeVersionFile)"</BuildArgs>
+      <BuildArgs Condition="'$(PortableBuild)' != 'true'">$(BuildArgs) -portablebuild=false</BuildArgs>
+      <BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) -cross</BuildArgs>
+      <BuildArgs Condition="'$(Compiler)' != ''">$(BuildArgs) $(Compiler)</BuildArgs>
+      <BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) $(CMakeArgs)</BuildArgs>
+      <BuildArgs>$(BuildArgs) -coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
+      <BuildArgs>$(BuildArgs) -nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
+    </PropertyGroup>
+
+    <!--
+      Use IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
+      warning in the macOS build when dsymutil tries to strip symbols.
+    -->
+    <Message Text="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" Importance="High"/>
+    <Exec Command="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
+  </Target>
+
+  <Target Name="BuildCoreHostWindows"
+          Condition="'$(TargetOS)' == 'Windows_NT'"
+          DependsOnTargets="GetLatestCommitHash">
+
+    <!-- Generate Version files -->
+    <ItemGroup>
+      <HostFiles Include="dotnet">
+       <FileDescription>.NET Host</FileDescription>
+      </HostFiles>
+      <HostFiles Include="hostfxr">
+        <FileDescription>.NET Host Resolver - $(HostResolverVersion)</FileDescription>
+      </HostFiles>
+      <HostFiles Include="hostpolicy">
+        <FileDescription>.NET Host Policy - $(HostPolicyVersion)</FileDescription>
+      </HostFiles>
+      <HostFiles Include="comhost">
+        <FileDescription>.NET COM Host</FileDescription>
+      </HostFiles>
+      <HostFiles Include="ijwhost">
+        <FileDescription>.NET IJW Host</FileDescription>
+      </HostFiles>
+      <HostFiles Include="nethost">
+        <FileDescription>.NET Component Host</FileDescription>
+      </HostFiles>
+    </ItemGroup>
+
+    <MSBuild
+      Projects="$(MSBuildProjectFullPath)"
+      Properties="
+        GenerateNativeVersionInfo=true;
+        AssemblyName=%(HostFiles.FileDescription);
+        NativeVersionFile=$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h"
+      Targets="GenerateNativeVersionFile"
+      Condition="
+        '$(IncrementalNativeBuild)' != 'true' or
+        !Exists('$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h')"/>
+
+    <PropertyGroup>
+      <BuildArgs>$(Configuration) $(TargetArchitecture) apphostver $(AppHostVersion) hostver $(HostVersion) fxrver $(HostResolverVersion) policyver $(HostPolicyVersion) commit $(LatestCommit) rid $(OutputRid)</BuildArgs>
+      <BuildArgs Condition="'$(PortableBuild)' == 'true'">$(BuildArgs) portable</BuildArgs>
+      <BuildArgs Condition="'$(IncrementalNativeBuild)' == 'true'">$(BuildArgs) incremental-native-build</BuildArgs>
+      <BuildArgs>$(BuildArgs) rootdir $(RepoRoot)</BuildArgs>
+      <BuildArgs>$(BuildArgs) coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
+      <BuildArgs>$(BuildArgs) nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
+    </PropertyGroup>
+
+    <!--
+      Run script that invokes Cmake to create VS files, and then calls msbuild to compile them. Use
+      IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
+      warning in the native build.
+    -->
+    <Message Text="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" Importance="High"/>
+    <Exec Command="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
+  </Target>
+
+  <Target Name="PrependWindowsHeaderIncludeToVersionHeaderFile"
+          Condition="'$(TargetOS)' == 'Windows_NT'"
+          AfterTargets="GenerateNativeVersionFile">
+    <PropertyGroup>
+      <IncludeStatementLine>#include &lt;Windows.h&gt;</IncludeStatementLine>
+      <NativeVersionFileContents>$([System.IO.File]::ReadAllText('$(NativeVersionFile)'))</NativeVersionFileContents>
+    </PropertyGroup>
+
+    <WriteLinesToFile
+      File="$(NativeVersionFile)"
+      Lines="$(IncludeStatementLine);$(NativeVersionFileContents)"
+      Overwrite="true" />
+  </Target>
+
+</Project>
index 2301e84828275c6390c0ea530b4b1788129745e6..f2eef864898f2328b6f010141e6e4758d6baf1f6 100644 (file)
@@ -4,6 +4,7 @@
   <PropertyGroup>
     <TraversalGlobalProperties>BuildAllProjects=true</TraversalGlobalProperties>
     <AdditionalBuildTargetFrameworks Condition="'$(DotNetBuildFromSource)' == 'true'">$(AdditionalBuildTargetFrameworks);package-$(Configuration)</AdditionalBuildTargetFrameworks>
+    <BuildAllOOBPackages Condition="'$(BuildAllOOBPackages)' == ''">true</BuildAllOOBPackages>
   </PropertyGroup>
   
   <PropertyGroup>
@@ -15,7 +16,8 @@
 
   <ItemGroup>
     <ProjectReference Include="$(PkgDir)*\*.proj" Exclude="$(PkgDir)test\*" />
-    <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\**\*.pkgproj" Condition="'$(BuildAllConfigurations)' == 'true' or '$(DotNetBuildFromSource)' == 'true'" />
+    <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\**\*.pkgproj" Condition="('$(BuildAllConfigurations)' == 'true' or '$(DotNetBuildFromSource)' == 'true') And '$(BuildAllOOBPackages)' == 'true'" />
+    <!-- If setting BuildAllOOBPackages to false, add bellow the individual OOB packages you want to continue to build -->
   </ItemGroup>
 
   <!-- Need the PackageIndexFile file property from baseline.props -->
index 854fbdda3febdd13b2e1672702eefae12a69ac54..3c152f7cb31b8301a7b3ab14638cda9c9f410710 100644 (file)
@@ -10,6 +10,6 @@
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="ICustomMarshaler.cs" />
-    <Compile Include="..\..\..\common\XunitBase.cs" />
+    <Compile Include="..\..\..\Common\XunitBase.cs" />
   </ItemGroup>
 </Project>