summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NuGet.config (renamed from NuGet.Config)0
-rw-r--r--azure-pipelines.yml45
-rwxr-xr-xbuild-packages.sh3
-rwxr-xr-xbuild.sh3
-rw-r--r--eng/build-job.yml81
-rw-r--r--eng/common/CIBuild.cmd3
-rw-r--r--eng/common/PublishBuildAssets.cmd2
-rw-r--r--eng/common/init-tools-native.sh2
-rw-r--r--eng/common/msbuild.ps16
-rwxr-xr-xeng/common/msbuild.sh4
-rw-r--r--eng/common/templates/job/job.yml15
-rw-r--r--eng/common/templates/job/publish-build-assets.yml24
-rw-r--r--eng/common/templates/jobs/jobs.yml6
-rw-r--r--eng/common/templates/steps/helix-publish.yml2
-rw-r--r--eng/common/templates/steps/send-to-helix.yml53
-rw-r--r--eng/common/tools.ps18
-rw-r--r--eng/platform-matrix.yml24
-rw-r--r--eng/test-job.yml84
-rw-r--r--eng/xplat-job.yml73
-rw-r--r--src/publishwitharcade.proj65
20 files changed, 319 insertions, 184 deletions
diff --git a/NuGet.Config b/NuGet.config
index 7fa789a1df..7fa789a1df 100644
--- a/NuGet.Config
+++ b/NuGet.config
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 8957e23e6b..0aba334b60 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -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
diff --git a/build-packages.sh b/build-packages.sh
index 71345eb6a1..fce6fe343f 100755
--- a/build-packages.sh
+++ b/build-packages.sh
@@ -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
diff --git a/build.sh b/build.sh
index 7e3f5bfcb8..a0b1742eff 100755
--- a/build.sh
+++ b/build.sh
@@ -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
diff --git a/eng/build-job.yml b/eng/build-job.yml
index 98710b42aa..d8a5f61102 100644
--- a/eng/build-job.yml
+++ b/eng/build-job.yml
@@ -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.
diff --git a/eng/common/CIBuild.cmd b/eng/common/CIBuild.cmd
index 6544b0cd54..56c2f25ac2 100644
--- a/eng/common/CIBuild.cmd
+++ b/eng/common/CIBuild.cmd
@@ -1,3 +1,2 @@
@echo off
-powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
-exit /b %ErrorLevel%
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*" \ No newline at end of file
diff --git a/eng/common/PublishBuildAssets.cmd b/eng/common/PublishBuildAssets.cmd
index 399ca0bd32..ac629f00e1 100644
--- a/eng/common/PublishBuildAssets.cmd
+++ b/eng/common/PublishBuildAssets.cmd
@@ -1,3 +1,3 @@
@echo off
-powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -msbuildEngine dotnet -restore -execute /p:PublishBuildAssets=true /p:SdkTaskProjects=PublishBuildAssets.proj %*"
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -msbuildEngine dotnet -restore -execute -binaryLog /p:PublishBuildAssets=true /p:SdkTaskProjects=PublishBuildAssets.proj %*"
exit /b %ErrorLevel%
diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh
index 54b70f678b..bd799af2a4 100644
--- a/eng/common/init-tools-native.sh
+++ b/eng/common/init-tools-native.sh
@@ -10,7 +10,7 @@ force=false
download_retries=5
retry_wait_time_seconds=30
global_json_file="${scriptroot}/../../global.json"
-declare -A native_assets
+declare -a native_assets
. $scriptroot/native/common-library.sh
diff --git a/eng/common/msbuild.ps1 b/eng/common/msbuild.ps1
index 3cd667219a..5810a746b1 100644
--- a/eng/common/msbuild.ps1
+++ b/eng/common/msbuild.ps1
@@ -11,6 +11,10 @@ Param(
. $PSScriptRoot\tools.ps1
try {
+ if ($ci) {
+ $nodeReuse = $false
+ }
+
MSBuild @extraArgs
}
catch {
@@ -20,4 +24,4 @@ catch {
ExitWithExitCode 1
}
-ExitWithExitCode 0 \ No newline at end of file
+ExitWithExitCode 0
diff --git a/eng/common/msbuild.sh b/eng/common/msbuild.sh
index 6fe07cb798..8160cd5a59 100755
--- a/eng/common/msbuild.sh
+++ b/eng/common/msbuild.sh
@@ -50,5 +50,9 @@ done
. "$scriptroot/tools.sh"
+if [[ "$ci" == true ]]; then
+ node_reuse=false
+fi
+
MSBuild $extra_args
ExitWithExitCode 0
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 9fb858e487..5e293db35d 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -95,11 +95,26 @@ jobs:
variables:
- ${{ each variable in parameters.variables }}:
+ # handle name-value variable syntax
+ # example:
+ # - name: [key]
+ # value: [value]
- ${{ if ne(variable.name, '') }}:
- name: ${{ variable.name }}
value: ${{ variable.value }}
+
+ # handle variable groups
- ${{ if ne(variable.group, '') }}:
- group: ${{ variable.group }}
+
+ # handle key-value variable syntax.
+ # example:
+ # - [key]: [value]
+ - ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
+ - ${{ each pair in variable }}:
+ - name: ${{ pair.key }}
+ value: ${{ pair.value }}
+
# Add additional variables
- ${{ if and(ne(parameters.helixRepo, ''), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}:
- name: _HelixSource
diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml
index b40016f6fc..c094658fef 100644
--- a/eng/common/templates/job/publish-build-assets.yml
+++ b/eng/common/templates/job/publish-build-assets.yml
@@ -1,10 +1,4 @@
parameters:
- # Optional: dependencies of the job
- dependsOn: ''
-
- # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
- pool: {}
-
configuration: 'Debug'
# Optional: condition for the job to run
@@ -13,6 +7,15 @@ parameters:
# Optional: 'true' if future jobs should run even if this job fails
continueOnError: false
+ # Optional: dependencies of the job
+ dependsOn: ''
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
+ pool: {}
+
# Optional: should run as a public build even in the internal project
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
runAsPublic: false
@@ -49,3 +52,12 @@ jobs:
displayName: Publish Build Assets
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
+ - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
+ - task: PublishBuildArtifacts@1
+ displayName: Publish Logs to VSTS
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: $(Agent.Os)_PublishBuildAssets
+ continueOnError: true
+ condition: always()
diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml
index 6aa55e3afc..c7226b12ed 100644
--- a/eng/common/templates/jobs/jobs.yml
+++ b/eng/common/templates/jobs/jobs.yml
@@ -20,8 +20,8 @@ parameters:
# Optional: enable sending telemetry
# if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
# _HelixBuildConfig - differentiate between Debug, Release, other
- # _HelixSource - Example: build/product/
- # _HelixType - Example: official/dotnet/arcade/$(Build.SourceBranch)
+ # _HelixType - Example: build/product/
+ # _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch)
enableTelemetry: false
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
@@ -73,3 +73,5 @@ jobs:
pool:
vmImage: vs2017-win2016
runAsPublic: ${{ parameters.runAsPublic }}
+ enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
+
diff --git a/eng/common/templates/steps/helix-publish.yml b/eng/common/templates/steps/helix-publish.yml
index 6dada380ce..470ab65da0 100644
--- a/eng/common/templates/steps/helix-publish.yml
+++ b/eng/common/templates/steps/helix-publish.yml
@@ -40,7 +40,7 @@ steps:
WorkItemCommand: ${{ parameters.WorkItemCommand }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
XUnitProjects: ${{ parameters.XUnitProjects }}
- XUnitTargetFramework: ${{ parameters.XUnitTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitTargetFramework }}
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml
index d0622f3caf..03f0e38662 100644
--- a/eng/common/templates/steps/send-to-helix.yml
+++ b/eng/common/templates/steps/send-to-helix.yml
@@ -1,29 +1,30 @@
parameters:
- HelixSource: 'pr/default' # required
- HelixType: 'tests/default/' # required
- HelixBuild: $(Build.BuildNumber) # required
- HelixTargetQueues: '' # required
- HelixAccessToken: '' # required
- HelixPreCommands: ''
- HelixPostCommands: ''
- WorkItemDirectory: ''
- WorkItemCommand: ''
- CorrelationPayloadDirectory: ''
- XUnitProjects: ''
- XUnitTargetFramework: ''
- XUnitRunnerVersion: ''
- IncludeDotNetCli: false
- DotNetCliPackageType: ''
- DotNetCliVersion: ''
- EnableXUnitReporter: false
- WaitForWorkItemCompletion: true
- IsExternal: false
- Creator: ''
- condition: succeeded()
- continueOnError: false
+ HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/
+ HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
+ HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
+ HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/api/2018-03-14/info/queues for a list of queues
+ HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group
+ HelixPreCommands: '' # optional -- commands to run before Helix work item execution
+ HelixPostCommands: '' # optional -- commands to run after Helix work item execution
+ WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
+ WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
+ CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload
+ XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
+ XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects
+ XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner
+ XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
+ IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
+ DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json
+ DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json
+ EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control
+ WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
+ IsExternal: false # optional -- true requires Creator and will make the Mission Control results visible to folks outside the Microsoft Org
+ Creator: '' # optional -- if the build is external, use this to specify who is sending the job
+ condition: succeeded() # optional -- condition for step to execute; defaults to succeeded()
+ continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
steps:
- - script: '%BUILD_SOURCESDIRECTORY%\eng\common\msbuild.ps1 %BUILD_SOURCESDIRECTORY%\eng\common\helixpublish.proj /bl:%BUILD_SOURCESDIRECTORY%\artifacts\log\%BuildConfig%\SendToHelix.binlog'
+ - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
displayName: Send job to Helix (Windows)
env:
BuildConfig: $(_BuildConfig)
@@ -38,7 +39,8 @@ steps:
WorkItemCommand: ${{ parameters.WorkItemCommand }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
XUnitProjects: ${{ parameters.XUnitProjects }}
- XUnitTargetFramework: ${{ parameters.XUnitTargetFramework }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
@@ -64,7 +66,8 @@ steps:
WorkItemCommand: ${{ parameters.WorkItemCommand }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
XUnitProjects: ${{ parameters.XUnitProjects }}
- XUnitTargetFramework: ${{ parameters.XUnitTargetFramework }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 0d0ebdc145..416eb30c8c 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -87,7 +87,7 @@ function Exec-Process([string]$command, [string]$commandArgs) {
}
function InitializeDotNetCli([bool]$install) {
- if (Test-Path global:_DotNetInstallDir) {
+ if (Test-Path variable:global:_DotNetInstallDir) {
return $global:_DotNetInstallDir
}
@@ -170,7 +170,7 @@ function InstallDotNetSdk([string] $dotnetRoot, [string] $version) {
# Throws on failure.
#
function InitializeVisualStudioMSBuild([bool]$install) {
- if (Test-Path global:_MSBuildExe) {
+ if (Test-Path variable:global:_MSBuildExe) {
return $global:_MSBuildExe
}
@@ -297,7 +297,7 @@ function LocateVisualStudio {
}
function InitializeBuildTool() {
- if (Test-Path global:_BuildTool) {
+ if (Test-Path variable:global:_BuildTool) {
return $global:_BuildTool
}
@@ -364,7 +364,7 @@ function GetNuGetPackageCachePath() {
}
function InitializeToolset() {
- if (Test-Path global:_ToolsetBuildProj) {
+ if (Test-Path variable:global:_ToolsetBuildProj) {
return $global:_ToolsetBuildProj
}
diff --git a/eng/platform-matrix.yml b/eng/platform-matrix.yml
index 647bd9ccef..03fcd580fe 100644
--- a/eng/platform-matrix.yml
+++ b/eng/platform-matrix.yml
@@ -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 }}
diff --git a/eng/test-job.yml b/eng/test-job.yml
index 218f8abe34..9baec1e0d1 100644
--- a/eng/test-job.yml
+++ b/eng/test-job.yml
@@ -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)
diff --git a/eng/xplat-job.yml b/eng/xplat-job.yml
index db8cf3ba50..8b251751c1 100644
--- a/eng/xplat-job.yml
+++ b/eng/xplat-job.yml
@@ -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/publishwitharcade.proj b/src/publishwitharcade.proj
index 01bc997288..a90570c0f5 100644
--- a/src/publishwitharcade.proj
+++ b/src/publishwitharcade.proj
@@ -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>