diff options
-rw-r--r-- | NuGet.config (renamed from NuGet.Config) | 0 | ||||
-rw-r--r-- | azure-pipelines.yml | 45 | ||||
-rwxr-xr-x | build-packages.sh | 3 | ||||
-rwxr-xr-x | build.sh | 3 | ||||
-rw-r--r-- | eng/build-job.yml | 81 | ||||
-rw-r--r-- | eng/common/CIBuild.cmd | 3 | ||||
-rw-r--r-- | eng/common/PublishBuildAssets.cmd | 2 | ||||
-rw-r--r-- | eng/common/init-tools-native.sh | 2 | ||||
-rw-r--r-- | eng/common/msbuild.ps1 | 6 | ||||
-rwxr-xr-x | eng/common/msbuild.sh | 4 | ||||
-rw-r--r-- | eng/common/templates/job/job.yml | 15 | ||||
-rw-r--r-- | eng/common/templates/job/publish-build-assets.yml | 24 | ||||
-rw-r--r-- | eng/common/templates/jobs/jobs.yml | 6 | ||||
-rw-r--r-- | eng/common/templates/steps/helix-publish.yml | 2 | ||||
-rw-r--r-- | eng/common/templates/steps/send-to-helix.yml | 53 | ||||
-rw-r--r-- | eng/common/tools.ps1 | 8 | ||||
-rw-r--r-- | eng/platform-matrix.yml | 24 | ||||
-rw-r--r-- | eng/test-job.yml | 84 | ||||
-rw-r--r-- | eng/xplat-job.yml | 73 | ||||
-rw-r--r-- | src/publishwitharcade.proj | 65 |
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 @@ -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> |