Publish packages in Azure DevOps official build (dotnet/coreclr#21536)
authorSven Boemer <sbomer@gmail.com>
Sat, 15 Dec 2018 01:03:40 +0000 (17:03 -0800)
committerGitHub <noreply@github.com>
Sat, 15 Dec 2018 01:03:40 +0000 (17:03 -0800)
This enables coreclr participation in dependency flow.

Commit migrated from https://github.com/dotnet/coreclr/commit/483135b05e853290d6890f9f5f72aa0bb96aca23

eng/build-job.yml
eng/pipelines/coreclr/azure-pipelines.yml
eng/platform-matrix.yml
eng/test-job.yml
eng/xplat-job.yml
src/coreclr/NuGet.Config [deleted file]
src/coreclr/build-packages.sh
src/coreclr/build.sh
src/coreclr/src/publishwitharcade.proj

index 98710b4..d8a5f61 100644 (file)
@@ -2,7 +2,7 @@ parameters:
   buildConfig: ''
   archType: ''
   osGroup: ''
-  osGroupName: ''
+  osIdentifier: ''
   containerName: ''
   crossrootfsDir: ''
 
@@ -13,17 +13,39 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: ${{ parameters.archType }}
     osGroup: ${{ parameters.osGroup }}
-    osGroupName: ${{ parameters.osGroupName }}
+    osIdentifier: ${{ parameters.osIdentifier }}
 
     # Compute job name from template parameters
-    name: ${{ format('build_{0}_{1}_{2}', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
-    displayName: ${{ format('Build {0} {1} {2}', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+    name: ${{ format('build_{0}_{1}_{2}', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
+    displayName: ${{ format('Build {0} {1} {2}', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
 
     # Run all steps in the container.
     # Note that the containers are resources defined in azure-pipelines.yml
     containerName: ${{ parameters.containerName }}
     crossrootfsDir: ${{ parameters.crossrootfsDir }}
 
+    gatherAssetManifests: true
+    variables:
+    - name: osIdentifier
+      value: ${{ parameters.osIdentifier }}
+    - name: portableBuildArg
+      value: ''
+    # Ensure that we produce os-specific packages for the following distros:
+    - ${{ if in(parameters.osIdentifier, 'Linux_rhel6', 'Linux_rhel7', 'Linux_musl') }}:
+      - name: portableBuildArg
+        value: '-portablebuild=false'
+    - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+      # Variables used to publish packages to blob feed
+      - name: dotnetfeedUrl
+        value: https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
+      - name: dotnetfeedPAT
+        value: $(dotnetfeed-storage-access-key-1)
+      # Variables used by arcade to gather asset manifests
+      - name: _DotNetPublishToBlobFeed
+        value: true
+      - name: _BuildConfig
+        value: $(buildConfigUpper)
+
     steps:
 
     # Install native dependencies
@@ -39,11 +61,11 @@ jobs:
 
     # Build
     - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
-      - script: ./build.sh $(buildConfig) $(archType) $(crossArg) -skiptests 
+      - script: ./build.sh $(buildConfig) $(archType) $(crossArg) -skiptests -skipnuget
         displayName: Build product
     - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
       # TODO: IBCOptimize? EnforcePGO? pass an OfficialBuildId? SignType? file logging parameters?
-      - script: set __TestIntermediateDir=int&&build.cmd $(buildConfig) $(archType) -skiptests
+      - script: set __TestIntermediateDir=int&&build.cmd $(buildConfig) $(archType) -skiptests -skipbuildpackages
         displayName: Build product
 
 
@@ -52,24 +74,24 @@ jobs:
       - task: PublishPipelineArtifact@0
         displayName: Save product build as pipeline artifact
         inputs:
-          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
           targetPath: $(Build.SourcesDirectory)/bin/Product/$(osGroup).$(archType).$(buildConfigUpper)
     - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
       - task: PublishPipelineArtifact@0
         displayName: Save product build as pipeline artifact
         inputs:
-          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
-          targetPath: $(Build.SourcesDirectory)\bin\Product\Windows_NT.$(archType).$(buildConfigUpper)
+          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
+          targetPath: $(Build.SourcesDirectory)\bin\Product\$(osGroup).$(archType).$(buildConfigUpper)
 
 
     # TODO: Sign
-    - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+    - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
       - script: echo Sign!
         displayName: Sign Binaries (empty for now)
 
 
     # Get key vault secrets for publishing
-    - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+    - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
       - task: AzureKeyVault@1
         inputs:
           azureSubscription: 'DotNet-Engineering-Services_KeyVault'
@@ -77,19 +99,30 @@ jobs:
           SecretsFilter: 'dotnetfeed-storage-access-key-1,microsoft-symbol-server-pat,symweb-symbol-server-pat'
 
 
-    # TODO: Build packages and publish official build
-    #- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
-    #    ${{ if or(eq(parameters.osGroup, 'Linux'), eq(parameters.osGroup, 'OSX')) }}:
-    #      # TODO: ensure that NUGET_PACKAGES path is correctly set
-    #      - script: .dotnet/dotnet msbuild src/restorearcadepublishtasks.proj /t:Restore
-    #        displayName: Restore tasks used to publish the build
-    #      - script: .dotnet/dotnet msbuild src/publishwitharcade.proj /t:PublishPackages /p:AzureFeedUrl=$(AzureFeedUrl) /p:AccountKey=$(AccountKey)
-    #        displayName: Publish official build
-    #    ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
-    #      # TODO: pass publish feed url and access token in from the internal pipeline
-    #      - script: .dotnet\dotnet.exe msbuild src\restorearcadepublishtasks.proj /t:Restore
-    #        displayName: Restore tasks used to publish the build
-    #      - script: .dotnet\dotnet.exe msbuild src\publishwitharcade.proj /t:PublishPackages /p:AzureFeedUrl=$(AzureFeedUrl) /p:AccountKey=$(AccountKey)
+    # Build packages and publish official build
+    - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+      - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
+        - script: ./build-packages.sh -BuildArch=$(archType) -BuildType=$(buildConfigUpper) $(crossPackagesArg) -OfficialBuildId=$(Build.BuildNumber) $(portableBuildArg)
+          displayName: Build packages
+        - script: ./eng/common/build.sh /p:DotNetPublishToBlobFeed=true --ci --restore
+          displayName: Restore blob feed tasks
+        - script: ./eng/common/msbuild.sh --ci src/publishwitharcade.proj /p:__BuildType=$(buildConfigUpper) /p:__BuildArch=$(archType) /p:OSIdentifier=$(osIdentifier) /p:AzureFeedUrl=$(dotnetfeedUrl) /p:AzureAccountKey=$(dotnetfeedPAT)
+          displayName: Publish packages to blob feed
+          env:
+            # TODO: remove NUGET_PACKAGES once https://github.com/dotnet/arcade/issues/1578 is fixed
+            NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages 
+      - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
+        # TODO: pass publish feed url and access token in from the internal pipeline
+        - script: build-packages.cmd -BuildArch=$(archType) -BuildType=$(buildConfigUpper) -OfficialBuildId=$(Build.BuildNumber)
+          displayName: Build packages
+        - powershell: eng\common\build.ps1 /p:DotNetPublishToBlobFeed=true -ci -restore
+          displayName: Restore blob feed tasks
+        - powershell: eng\common\msbuild.ps1 -ci src\publishwitharcade.proj /p:__BuildType=$(buildConfigUpper) /p:__BuildArch=$(archType) /p:OSIdentifier=$(osIdentifier) /p:AzureFeedUrl=$(dotnetfeedUrl) /p:AzureAccountKey=$(dotnetfeedPAT)
+          displayName: Publish packages to blob feed
+          env:
+            # TODO: remove NUGET_PACKAGES once https://github.com/dotnet/arcade/issues/1578 is fixed
+            NUGET_PACKAGES: $(Build.SourcesDirectory)\.packages 
+
 
     # Kill tasks that hold onto files on Windows. Otherwise git clean
     # may fail for later jobs on the same agent.
index 8957e23..0aba334 100644 (file)
@@ -1,3 +1,8 @@
+
+# Temporarily set a build number format that includes a large revision
+# number that won't conflict with buildpipeline official builds.
+name: $(Date:yyyyMMdd)$(Rev:.7r)
+
 variables:
   DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
 
@@ -183,23 +188,23 @@ jobs:
 # registry. Its dependencies should be updated to include all of the
 # official builds if we add more platform/arch combinations.
 
-# TODO: Enable publish to BAR
-#- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
-#  - template: /eng/common/templates/phases/publish-build-assets.yml@arcade
-#- phase: publish_bar
-#  displayName: publish to BAR (empty currently)
-#  queue:
-#    name: Hosted VS2017
-#  dependsOn:
-#  - build_Linux_x64_release
-#  - build_OSX_x64_release
-#  - build_Windows_NT_x64_release
-#  - build_Windows_NT_x86_release
-#  - build_Windows_NT_arm_release
-#  - build_Windows_NT_arm64_release
-  # TODO: enable these builds
-  #  - build_rhel_x64_release
-  #  - build_alpine_x64_release
-  #  - build_crossbuild_arm_release
-  #  - build_crossbuild_arm64_release
-
+- ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+  - template: /eng/common/templates/job/publish-build-assets.yml
+    parameters:
+      configuration: Release
+      pool:
+        name: dotnet-internal-temp
+      dependsOn:
+      - build_Linux_arm_release
+      - build_Linux_arm64_release
+      # TODO: depend on musl job once the glibc container issue is fixed
+      # https://dnceng.visualstudio.com/internal/_workitems/edit/109
+      # - build_Linux_musl_x64_release
+      - build_Linux_rhel6_x64_release
+      - build_Linux_rhel7_x64_release
+      - build_Linux_x64_release
+      - build_OSX_x64_release
+      - build_Windows_NT_x64_release
+      - build_Windows_NT_x86_release
+      - build_Windows_NT_arm_release
+      - build_Windows_NT_arm64_release
index 647bd9c..03fcd58 100644 (file)
@@ -5,7 +5,7 @@ parameters:
 
 jobs:
 
-# TODO: simplify osGroupName by adding osGroup and osSubGroup. See
+# TODO: simplify osIdentifier by adding osGroup and osSubGroup. See
 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
 
 # Linux arm
@@ -14,7 +14,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: arm
     osGroup: Linux
-    osGroupName: Linux
+    osIdentifier: Linux
     containerName: ubuntu_1404_arm_cross_build_image
     helixQueuesPublic: 'Ubuntu.1404.Arm32.Open'
     crossrootfsDir: '/crossrootfs/arm'
@@ -27,7 +27,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: arm64
     osGroup: Linux
-    osGroupName: Linux
+    osIdentifier: Linux
     containerName: ubuntu_1604_arm64_cross_build_image
     # TODO: enable Debian.9.Arm64.Open and Debian.9.Arm64 queues
     # when https://github.com/dotnet/core-eng/issues/4805 is resolved
@@ -42,7 +42,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: Linux
-    osGroupName: Linux_musl
+    osIdentifier: Linux_musl
     containerName: musl_x64_build_image
     # TODO: add Alpine.Amd64 queues
     ${{ insert }}: ${{ parameters.jobParameters }}
@@ -53,7 +53,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: Linux
-    osGroupName: Linux_rhel6
+    osIdentifier: Linux_rhel6
     containerName: centos6_x64_build_image
     helixQueuesPublic: 'RedHat.6.Amd64.Open'
     helixQueuesInternal: 'RedHat.6.Amd64'
@@ -65,7 +65,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: Linux
-    osGroupName: Linux_rhel7
+    osIdentifier: Linux_rhel7
     containerName: centos7_x64_build_image
     helixQueuesPublic: 'Centos.7.Amd64.Open,Fedora.28.Amd64.Open,RedHat.7.Amd64.Open'
     helixQueuesInternal: 'Centos.7.Amd64,Fedora.28.Amd64,RedHat.7.Amd64'
@@ -78,7 +78,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: Linux
-    osGroupName: Linux
+    osIdentifier: Linux
     containerName: ubuntu_1604_x64_build_image
     helixQueuesPublic: 'Debian.8.Amd64.Open,Ubuntu.1604.Amd64.Open,Ubuntu.1804.Amd64.Open'
     helixQueuesInternal: 'Debian.8.Amd64,Ubuntu.1604.Amd64,Ubuntu.1804.Amd64'
@@ -91,7 +91,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: OSX
-    osGroupName: OSX
+    osIdentifier: OSX
     helixQueuesPublic: 'OSX.1012.Amd64.Open,OSX.1013.Amd64.Open'
     helixQueuesInternal: 'OSX.1012.Amd64,OSX.1013.Amd64'
     ${{ insert }}: ${{ parameters.jobParameters }}
@@ -103,7 +103,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x64
     osGroup: Windows_NT
-    osGroupName: Windows_NT
+    osIdentifier: Windows_NT
     helixQueuesPublic: 'Windows.10.Amd64.Open,Windows.10.Nano.Amd64.Open,Windows.7.Amd64.Open,Windows.81.Amd64.Open'
     helixQueuesInternal: 'Windows.10.Amd64,Windows.10.Nano.Amd64,Windows.10.Amd64.Core,Windows.7.Amd64,Windows.81.Amd64'
     ${{ insert }}: ${{ parameters.jobParameters }}
@@ -113,7 +113,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: x86
     osGroup: Windows_NT
-    osGroupName: Windows_NT
+    osIdentifier: Windows_NT
     helixQueuesPublic: 'Windows.10.Amd64.Open,Windows.10.Nano.Amd64.Open,Windows.7.Amd64.Open,Windows.81.Amd64.Open'
     helixQueuesInternal: 'Windows.10.Amd64,Windows.10.Nano.Amd64,Windows.10.Amd64.Core,Windows.7.Amd64,Windows.81.Amd64'
     ${{ insert }}: ${{ parameters.jobParameters }}
@@ -123,7 +123,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: arm
     osGroup: Windows_NT
-    osGroupName: Windows_NT
+    osIdentifier: Windows_NT
     helixQueuesPublic: 'Windows.10.Arm64.Open'
     helixQueuesInternal: 'Windows.10.Arm64'
     ${{ insert }}: ${{ parameters.jobParameters }}
@@ -133,7 +133,7 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: arm64
     osGroup: Windows_NT
-    osGroupName: Windows_NT
+    osIdentifier: Windows_NT
     helixQueuesPublic: 'Windows.10.Arm64.Open'
     helixQueuesInternal: 'Windows.10.Arm64'
     ${{ insert }}: ${{ parameters.jobParameters }}
index 218f8ab..9baec1e 100644 (file)
@@ -2,7 +2,7 @@ parameters:
   buildConfig: ''
   archType: ''
   osGroup: ''
-  osGroupName: ''
+  osIdentifier: ''
   priority: 0
   crossgen: false
   scenarios: ''
@@ -22,56 +22,56 @@ jobs:
     buildConfig: ${{ parameters.buildConfig }}
     archType: ${{ parameters.archType }}
     osGroup: ${{ parameters.osGroup }}
-    osGroupName: ${{ parameters.osGroupName }}
+    osIdentifier: ${{ parameters.osIdentifier }}
 
     # Compute job name from template parameters
     ${{ if eq(parameters.crossgen, 'false') }}:
-        name: ${{ format('testbuild_pri{0}_{1}_{2}_{3}', parameters.priority, parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
-        displayName: ${{ format('Test Pri{0} {1} {2} {3}', parameters.priority, parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+      name: ${{ format('testbuild_pri{0}_{1}_{2}_{3}', parameters.priority, parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
+      displayName: ${{ format('Test Pri{0} {1} {2} {3}', parameters.priority, parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
     ${{ if eq(parameters.crossgen, 'true') }}:
-        name: ${{ format('testbuild_pri{0}_r2r_{1}_{2}_{3}', parameters.priority, parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
-        displayName: ${{ format('Test Pri{0} R2R {1} {2} {3}', parameters.priority, parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+      name: ${{ format('testbuild_pri{0}_r2r_{1}_{2}_{3}', parameters.priority, parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
+      displayName: ${{ format('Test Pri{0} R2R {1} {2} {3}', parameters.priority, parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
 
     ${{ if eq(parameters.crossgen, 'false') }}:
-        helixType: ${{ format('test/functional/cli/pri{0}', parameters.priority) }}
+      helixType: ${{ format('test/functional/cli/pri{0}', parameters.priority) }}
     ${{ if eq(parameters.crossgen, 'true') }}:
-        helixType: ${{ format('test/functional/r2r/cli/pri{0}', parameters.priority) }}
+      helixType: ${{ format('test/functional/r2r/cli/pri{0}', parameters.priority) }}
 
     crossrootfsDir: ${{ parameters.crossrootfsDir }}
 
     variables:
-      # Map template parameters to command line arguments
-      - ${{ if eq(parameters.priority, '1') }}:
-        - ${{ if or(eq(parameters.osGroup, 'Linux'), eq(parameters.osGroup, 'OSX')) }}:
-          - name: priorityArg
-            value: 'priority1'
-        - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
-          - name: priorityArg
-            value: '-priority=1'
-      - ${{ if eq(parameters.priority, '0') }}:
+    # Map template parameters to command line arguments
+    - ${{ if eq(parameters.priority, '1') }}:
+      - ${{ if or(eq(parameters.osGroup, 'Linux'), eq(parameters.osGroup, 'OSX')) }}:
         - name: priorityArg
-          value: ''
-
-      - ${{ if eq(parameters.crossgen, 'true') }}:
-        - name: crossgenArg
-          value: 'crossgen'
-      - ${{ if eq(parameters.crossgen, 'false') }}:
-        - name: crossgenArg
-          value: ''
-      - ${{ if ne(parameters.scenarios, '') }}:
-        - name: scenariosArg
-          value: ${{ format('/p:Scenarios=\"{0}\"', parameters.scenarios) }}
-      - ${{ if eq(parameters.scenarios, '') }}:
-        - name: scenariosArg
-          value: ''
-      - ${{ if eq(variables['System.TeamProject'], 'public') }}:
-        - name: helixTargetQueuesArg
-          value: ${{ format('/p:HelixTargetQueues=\"{0}\"', parameters.helixQueuesPublic) }}
-      - ${{ if ne(variables['System.TeamProject'], 'public') }}:
-        - name: helixTargetQueuesArg
-          value: ${{ format('/p:HelixTargetQueues=\"{0}\"', parameters.helixQueuesInternal) }}
-      - name: commonMSBuildArgs
-        value: ${{ format('/maxcpucount /p:__BuildOS={0} /p:__BuildArch={1} /p:__BuildType={2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
+          value: 'priority1'
+      - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
+        - name: priorityArg
+          value: '-priority=1'
+    - ${{ if eq(parameters.priority, '0') }}:
+      - name: priorityArg
+        value: ''
+
+    - ${{ if eq(parameters.crossgen, 'true') }}:
+      - name: crossgenArg
+        value: 'crossgen'
+    - ${{ if eq(parameters.crossgen, 'false') }}:
+      - name: crossgenArg
+        value: ''
+    - ${{ if ne(parameters.scenarios, '') }}:
+      - name: scenariosArg
+        value: ${{ format('/p:Scenarios=\"{0}\"', parameters.scenarios) }}
+    - ${{ if eq(parameters.scenarios, '') }}:
+      - name: scenariosArg
+        value: ''
+    - ${{ if eq(variables['System.TeamProject'], 'public') }}:
+      - name: helixTargetQueuesArg
+        value: ${{ format('/p:HelixTargetQueues=\"{0}\"', parameters.helixQueuesPublic) }}
+    - ${{ if ne(variables['System.TeamProject'], 'public') }}:
+      - name: helixTargetQueuesArg
+        value: ${{ format('/p:HelixTargetQueues=\"{0}\"', parameters.helixQueuesInternal) }}
+    - name: commonMSBuildArgs
+      value: ${{ format('/maxcpucount /p:__BuildOS={0} /p:__BuildArch={1} /p:__BuildType={2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
 
     # TODO: Enable crossgen in build-test.sh. It currently doesn't
     # accept a crossgen arg, so disable the macos/linux crossgen test
@@ -80,7 +80,7 @@ jobs:
       condition: false
 
     # Test job depends on the corresponding build job
-    dependsOn: ${{ format('build_{0}_{1}_{2}', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+    dependsOn: ${{ format('build_{0}_{1}_{2}', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
 
     # Run all steps in the container.
     # Note that the containers are resources defined in azure-pipelines.yml
@@ -101,13 +101,13 @@ jobs:
       - task: DownloadPipelineArtifact@0
         displayName: Download product build pipeline artifact
         inputs:
-          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
           targetPath: $(Build.SourcesDirectory)/bin/Product/$(osGroup).$(archType).$(buildConfigUpper)
     - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
       - task: DownloadPipelineArtifact@0
         displayName: Download product build pipeline artifact
         inputs:
-          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osGroupName, parameters.archType, parameters.buildConfig) }}
+          artifactName: ${{ format('{0}_{1}_{2}_build', parameters.osIdentifier, parameters.archType, parameters.buildConfig) }}
           targetPath: $(Build.SourcesDirectory)\bin\Product\Windows_NT.$(archType).$(buildConfigUpper)
 
       
index db8cf3b..8b25175 100644 (file)
@@ -2,7 +2,7 @@ parameters:
   buildConfig: ''
   archType: ''
   osGroup: ''
-  osGroupName: ''
+  osIdentifier: ''
   name: ''
   displayName: ''
   condition: ''
@@ -11,6 +11,10 @@ parameters:
   timeoutInMinutes: ''
   helixType: ''
   crossrootfsDir: ''
+
+  # arcade-specific parameters
+  gatherAssetManifests: false
+
   variables: {} ## any extra variables to add to the defaults defined below
 
 jobs:
@@ -54,42 +58,51 @@ jobs:
     ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
       agentOs: Windows_NT
 
+    # Setting this results in the arcade job template including a step
+    # that gathers asset manifests and publishes them to pipeline
+    # storage. Only relevant for build jobs.
+    enablePublishBuildAssets: ${{ parameters.gatherAssetManifests }}
+
     variables:
-      - name: buildConfig
-        value: ${{ parameters.buildConfig }}
+    - name: buildConfig
+      value: ${{ parameters.buildConfig }}
         
-      - ${{ if eq(parameters.buildConfig, 'checked') }}:
-          - name: buildConfigUpper
-            value: 'Checked'
+    - ${{ if eq(parameters.buildConfig, 'checked') }}:
+      - name: buildConfigUpper
+        value: 'Checked'
 
-      - ${{ if eq(parameters.buildConfig, 'debug') }}:
-          - name: buildConfigUpper
-            value: 'Debug'
+    - ${{ if eq(parameters.buildConfig, 'debug') }}:
+      - name: buildConfigUpper
+        value: 'Debug'
 
-      - ${{ if eq(parameters.buildConfig, 'release') }}:
-          - name: buildConfigUpper
-            value: 'Release'
+    - ${{ if eq(parameters.buildConfig, 'release') }}:
+      - name: buildConfigUpper
+        value: 'Release'
 
-      - name: archType
-        value: ${{ parameters.archType }}
+    - name: archType
+      value: ${{ parameters.archType }}
 
-      - name: osGroup
-        value: ${{ parameters.osGroup }}
+    - name: osGroup
+      value: ${{ parameters.osGroup }}
 
-      - name: osGroupName
-        value: ${{ parameters.osGroupName }}
+    - name: osIdentifier
+      value: ${{ parameters.osIdentifier }}
       
-      - ${{ if ne(parameters.crossrootfsDir, '') }}:
-          - name: crossArg
-            value: 'cross'
-          # This is only required for cross builds.
-          - name: ROOTFS_DIR
-            value: ${{ parameters.crossrootfsDir }}
-      - ${{ if eq(parameters.crossrootfsDir, '') }}:
-          - name: crossArg
-            value: ''
-
-      - ${{ each variable in parameters.variables }}:
-        - ${{insert}}: ${{ variable }}
+    - ${{ if ne(parameters.crossrootfsDir, '') }}:
+      - name: crossArg
+        value: 'cross'
+      - name: crossPackagesArg
+        value: '-__DoCrossArchBuild=1'
+      # This is only required for cross builds.
+      - name: ROOTFS_DIR
+        value: ${{ parameters.crossrootfsDir }}
+    - ${{ if eq(parameters.crossrootfsDir, '') }}:
+      - name: crossArg
+        value: ''
+      - name: crossPackagesArg
+        value: ''
+
+    - ${{ each variable in parameters.variables }}:
+      - ${{insert}}: ${{ variable }}
 
     steps: ${{ parameters.steps }}
diff --git a/src/coreclr/NuGet.Config b/src/coreclr/NuGet.Config
deleted file mode 100644 (file)
index 7fa789a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <packageSources>
-    <clear />
-    <add key="arcade" value="https://dotnetfeed.blob.core.windows.net/dotnet-tools-internal/index.json" />
-    <add key="dotnet-core" value="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" />
-    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
-  </packageSources>
-</configuration>
\ No newline at end of file
index 71345eb..fce6fe3 100755 (executable)
@@ -29,6 +29,9 @@ initHostDistroRid()
             if [[ $redhatRelease == "CentOS release 6."* || $redhatRelease == "Red Hat Enterprise Linux Server release 6."* ]]; then
                __HostDistroRid="rhel.6-$__Arch"
             fi
+            if [[ $redhatRelease == "CentOS Linux release 7."* ]]; then
+                __HostDistroRid="rhel.7-$__Arch"
+            fi
         fi
     fi
     if [ "$__HostOS" == "FreeBSD" ]; then
index 7e3f5bf..a0b1742 100755 (executable)
@@ -80,6 +80,9 @@ initHostDistroRid()
             if [[ $redhatRelease == "CentOS release 6."* || $redhatRelease == "Red Hat Enterprise Linux Server release 6."* ]]; then
                __HostDistroRid="rhel.6-$__HostArch"
             fi
+            if [[ $redhatRelease == "CentOS Linux release 7."* ]]; then
+                __HostDistroRid="rhel.7-$__Arch"
+            fi
         fi
     fi
     if [ "$__HostOS" == "FreeBSD" ]; then
index 01bc997..a90570c 100644 (file)
@@ -1,37 +1,76 @@
-<Project DefaultTargets="PublishProductPackages" Sdk="Microsoft.DotNet.Arcade.Sdk">
+<Project DefaultTargets="PublishPackages">
 
   <!-- TODO: move properties imported from here into a common props file -->
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
 
+  <!-- Use an explicit SDK import so that arcade uses the build
+       configuration computed in dir.common.props. -->
+  <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
+
   <Import Project="$(NuGetPackageRoot)microsoft.dotnet.build.tasks.feed\$(MicrosoftDotNetBuildTasksFeedVersion)\build\Microsoft.DotNet.Build.Tasks.Feed.targets" />
 
+  <PropertyGroup>
+    <!-- Set the TargetFramework just to make the SDK happy -->
+    <TargetFramework>net462</TargetFramework>
+  </PropertyGroup>
+
   <Target Name="PublishPackages">
 
     <ItemGroup>
-      <ItemsToPush Remove="*.nupkg" />
-      <ItemsToPush Include="$(PackagesBinDir)pkg\*.nupkg">
-        <ManifestArtifactData>NonShipping=true</ManifestArtifactData> <!-- TODO: how is this metadata used? -->
-      </ItemsToPush>
+      <PackagesToPublish Include="$(PackagesBinDir)pkg\*.nupkg" IsShipping="true" />
+    </ItemGroup>
+
+    <!-- Managed-only packages are built on each windows leg, but we
+         only want to upload them once. Let's arbitrarily upload these
+         only from the x64 leg. -->
+    <ItemGroup Condition=" '$(BuildArch)' != 'x64' ">
+      <PackagesToPublish Remove="$(PackagesBinDir)pkg\Microsoft.NET.Sdk.IL*.nupkg" />
+      <PackagesToPublish Remove="$(PackagesBinDir)pkg\Microsoft.TargetingPack.Private.CoreCLR*.nupkg" />
+    </ItemGroup>
+
+    <!-- TODO: Investigate whether we can get rid of the transport
+         packages entirely. For now, just exclude them from
+         publishing. -->
+    <ItemGroup>
+      <PackagesToPublish Remove="$(PackagesBinDir)pkg\transport*.nupkg" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <ItemsToPushToBlobFeed Include="@(PackagesToPublish)">
+        <ManifestArtifactData Condition="!%(IsShipping)">NonShipping=true</ManifestArtifactData> <!-- TODO: how is this metadata used? -->
+      </ItemsToPushToBlobFeed>
     </ItemGroup>
 
     <Error Condition=" '$(AzureFeedUrl)' == '' " Text="AzureFeedUrl must be set" />
-    <Error Condition=" '$(AccountKey)' == '' " Text="AccountKey must be set" />
+    <Error Condition=" '$(AzureAccountKey)' == '' " Text="AzureAccountKey must be set" />
     <Error Condition=" '$(BUILD_REPOSITORY_URI)' == '' " Text="BUILD_REPOSITORY_URI must be set" />
     <Error Condition=" '$(BUILD_SOURCEBRANCH)' == '' " Text="BUILD_SOURCEBRANCH must be set" />
     <Error Condition=" '$(BUILD_BUILDNUMBER)' == '' " Text="BUILD_BUILDNUMBER must be set" />
     <Error Condition=" '$(BUILD_SOURCEVERSION)' == '' " Text="BUILD_SOURCEVERSION must be set" />
 
+
+    <PropertyGroup>
+      <AssetManifestFilePath>$(ArtifactsLogDir)AssetManifest\$(OSIdentifier)-$(BuildArch)</AssetManifestFilePath>
+      <!-- Work around an issue where the repo URI is different on
+           OSX, causing the manifests to have different headers, which
+           makes publishing to BAR fail later when it tries to merge
+           the manifests. -->
+      <_TemporaryBuildRepositoryUri>$(BUILD_REPOSITORY_URI)</_TemporaryBuildRepositoryUri>
+      <_TemporaryBuildRepositoryUri Condition="'$(BUILD_REPOSITORY_URI)' == 'https://dnceng.visualstudio.com/internal/_git/dotnet-coreclr'" >https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-coreclr</_TemporaryBuildRepositoryUri>
+    </PropertyGroup>
+
+    <Message Importance="High" Text="BUILD_REPOSITORY_URI: $(BUILD_REPOSITORY_URI)" />
+    <Message Importance="High" Text="_TemporaryBuildRepositoryUri: $(_TemporaryBuildRepositoryUri)" />
+
     <PushToBlobFeed ExpectedFeedUrl="$(AzureFeedUrl)"
-                    AccountKey="$(AccountKey)"
-                    ItemsToPush="@(ItemsToPush)"
+                    AccountKey="$(AzureAccountKey)"
+                    ItemsToPush="@(ItemsToPushToBlobFeed)"
                     ManifestBuildData="Location=$(AzureFeedUrl)"
-                    ManifestRepoUri="$(BUILD_REPOSITORY_URI)"
+                    ManifestRepoUri="$(_TemporaryBuildRepositoryUri)"
                     ManifestBranch="$(BUILD_SOURCEBRANCH)"
                     ManifestBuildId="$(BUILD_BUILDNUMBER)"
-                    ManifestCommit="$(BUILD_SOURCEVERSION)" />
-                    <!-- TODO: The arcade sample publishes an asset manifest. Do we want this?
-                    AssetManifestPath="" />
-                    -->
+                    ManifestCommit="$(BUILD_SOURCEVERSION)"
+                    AssetManifestPath="$(AssetManifestFilePath)" />
   </Target>
 
 </Project>