Adding a ci leg for Source build (#36141)
authorAnirudh Agnihotry <anirudhagnihotry098@gmail.com>
Tue, 19 May 2020 21:44:01 +0000 (14:44 -0700)
committerGitHub <noreply@github.com>
Tue, 19 May 2020 21:44:01 +0000 (14:44 -0700)
* successfullsource build

* adding a new source build leg.

* remove yy

* add default vlaue

* addressing feedback

* use boolean value

* addind comment and other feedback

* adding colon and removing unintentional change

* adding default value of isSourceBUild

eng/notSupported.SourceBuild.targets
eng/pipelines/libraries/base-job.yml
eng/pipelines/libraries/build-job.yml
eng/pipelines/runtime.yml

index afbbdd3..743c4a3 100644 (file)
@@ -3,7 +3,11 @@
           BeforeTargets="BeforeCompile"
           Condition="'$(DotNetBuildFromSource)' == 'true' and
                      ('$(GeneratePlatformNotSupportedAssembly)' == 'true' or '$(GeneratePlatformNotSupportedAssemblyMessage)' != '')">
-                     
+
+    <PropertyGroup>
+      <DotNetSourceBuildIntermediatePath Condition="'$(DotNetSourceBuildIntermediatePath)' == '' and '$(ContinuousIntegrationBuild)' == 'true'">$(IntermediateOutputPath)</DotNetSourceBuildIntermediatePath>
+    </PropertyGroup>
+   
     <Error Condition="'$(DotNetSourceBuildIntermediatePath)' == ''" 
            Text="'DotNetSourceBuildIntermediatePath' must be specified when 'DotNetBuildFromSource' is true" />
 
index 5330571..575f23f 100644 (file)
@@ -7,6 +7,7 @@ parameters:
   framework: ''
   isOfficialBuild: false
   isOfficialAllConfigurations: false
+  isSourceBuild: false
   liveRuntimeBuildConfig: ''
   runtimeFlavor: 'coreclr'
   timeoutInMinutes: 150
@@ -24,8 +25,12 @@ jobs:
   - template: /eng/common/templates/job/job.yml
     parameters:
       ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
-        displayName: ${{ format('Libraries {0} {1}{2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
-        name: ${{ format('libraries_{0}_{1}{2}_{3}_{4}', parameters.name, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+        ${{ if eq(parameters.isSourceBuild, false) }}:
+          displayName: ${{ format('Libraries {0} {1}{2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+          name: ${{ format('libraries_{0}_{1}{2}_{3}_{4}', parameters.name, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+        ${{ if eq(parameters.isSourceBuild, true) }}:
+          displayName: ${{ format('Libraries {0} {1}{2} {3} {4}', 'Source Build', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+          name: ${{ format('libraries_{0}_{1}{2}_{3}_{4}', 'sourcebuild', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
       ${{ if in(parameters.framework, 'allConfigurations', 'net472') }}:
         displayName: ${{ format('Libraries {0} {1} {2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.framework, parameters.archType, parameters.buildConfig) }}
         name: ${{ format('libraries_{0}_{1}_{2}{3}_{4}_{5}', parameters.name, parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
@@ -75,6 +80,9 @@ jobs:
           - _finalFrameworkArg: -allConfigurations
           - _extraHelixArguments: /p:BuildAllConfigurations=true
 
+        - ${{ if eq(parameters.isSourceBuild, true) }}:
+          - _finalFrameworkArg: /p:DotnetBuildFromSource=true
+
         - ${{ if eq(parameters.isOfficialAllConfigurations, true) }}:
           - librariesBuildArtifactName: 'libraries_bin_official_allconfigurations'
 
index 2b4e3dd..2287c8f 100644 (file)
@@ -5,6 +5,7 @@ parameters:
   archType: ''
   crossrootfsDir: ''
   framework: ''
+  isSourceBuild: false
   isOfficialBuild: false
   isOfficialAllConfigurations: false
   runtimeVariant: ''
@@ -37,6 +38,7 @@ jobs:
       framework:  ${{ parameters.framework }}
       isOfficialBuild: ${{ parameters.isOfficialBuild }}
       isOfficialAllConfigurations: ${{ parameters.isOfficialAllConfigurations }}
+      isSourceBuild: ${{ parameters.isSourceBuild }}
       liveRuntimeBuildConfig: ${{ parameters.liveRuntimeBuildConfig }}
       runtimeFlavor: ${{ parameters.runtimeFlavor }}
       timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
@@ -96,7 +98,7 @@ jobs:
               df -h
             displayName: Disk Usage after Build
 
-        - ${{ if eq(parameters.runTests, false) }}:
+        - ${{ if and(eq(parameters.runTests, false), ne(parameters.isSourceBuild, true)) }}:
           - ${{ if ne(parameters.isOfficialBuild, true) }}:            
             - task: CopyFiles@2
               displayName: Prepare testhost folder to publish
index c340890..47df45a 100644 (file)
@@ -549,6 +549,24 @@ jobs:
           eq(variables['isFullMatrix'], true))
 
 #
+# Libraries Sourcebuild Build
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/libraries/build-job.yml
+    buildConfig: Release
+    platforms:
+    - Linux_x64
+    jobParameters:
+      runTests: false
+      liveRuntimeBuildConfig: release
+      isSourceBuild: true
+      condition: >-
+        or(
+          eq(dependencies.checkout.outputs['SetPathVars_libraries.containsChange'], true),
+          eq(variables['isFullMatrix'], 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.