buildConfig: ''
archType: ''
osGroup: ''
- osGroupName: ''
+ osIdentifier: ''
containerName: ''
crossrootfsDir: ''
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
# 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
- 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'
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.
+
+# 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
# 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
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
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'
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
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 }}
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'
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'
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'
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 }}
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 }}
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 }}
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 }}
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 }}
buildConfig: ''
archType: ''
osGroup: ''
- osGroupName: ''
+ osIdentifier: ''
priority: 0
crossgen: false
scenarios: ''
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
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
- 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)
buildConfig: ''
archType: ''
osGroup: ''
- osGroupName: ''
+ osIdentifier: ''
name: ''
displayName: ''
condition: ''
timeoutInMinutes: ''
helixType: ''
crossrootfsDir: ''
+
+ # arcade-specific parameters
+ gatherAssetManifests: false
+
variables: {} ## any extra variables to add to the defaults defined below
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 }}
+++ /dev/null
-<?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
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
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
-<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>