summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordotnet-maestro <@dotnet-maestro>2019-06-27 17:38:54 +0000
committerdotnet-maestro <@dotnet-maestro>2019-06-27 17:38:54 +0000
commit270a666c5a2603d62cfcd9515a03095d11122a4e (patch)
tree36aa68d4b9f4b99f96120e7bea099e440f1b56fc
parentda8651b02d74316a1763f45889d51daae54d9479 (diff)
downloadcoreclr-270a666c5a2603d62cfcd9515a03095d11122a4e.tar.gz
coreclr-270a666c5a2603d62cfcd9515a03095d11122a4e.tar.bz2
coreclr-270a666c5a2603d62cfcd9515a03095d11122a4e.zip
Update dependencies from https://github.com/dotnet/arcade build 20190626.44
- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19326.44 - Microsoft.DotNet.Build.Tasks.Feed - 2.2.0-beta.19326.44 - Microsoft.DotNet.Build.Tasks.Packaging - 1.0.0-beta.19326.44 - Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19326.44
-rw-r--r--eng/Version.Details.xml17
-rw-r--r--eng/Versions.props4
-rw-r--r--eng/common/build.ps12
-rwxr-xr-xeng/common/build.sh7
-rw-r--r--eng/common/post-build/promote-build.ps153
-rw-r--r--eng/common/sdl/extract-artifact-packages.ps166
-rw-r--r--eng/common/templates/job/execute-sdl.yml10
-rw-r--r--eng/common/templates/job/publish-build-assets.yml1
-rw-r--r--eng/common/templates/post-build/channels/internal-servicing.yml167
-rw-r--r--eng/common/templates/post-build/channels/public-dev-release.yml59
-rw-r--r--eng/common/templates/post-build/channels/public-release.yml167
-rw-r--r--eng/common/templates/post-build/channels/public-validation-release.yml52
-rw-r--r--eng/common/templates/post-build/common-variables.yml9
-rw-r--r--eng/common/templates/post-build/post-build.yml4
-rw-r--r--eng/common/templates/post-build/promote-build.yml12
-rw-r--r--eng/common/templates/post-build/setup-maestro-vars.yml4
-rw-r--r--eng/common/tools.ps123
-rw-r--r--global.json4
18 files changed, 585 insertions, 76 deletions
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 082590d107..a3b02157da 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,23 +1,22 @@
-
<Dependencies>
<ProductDependencies>
</ProductDependencies>
<ToolsetDependencies>
- <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19324.24">
+ <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19326.44">
<Uri>https://github.com/dotnet/arcade</Uri>
- <Sha>062febd818fa51e82c7192782a6b6e6429cc81c8</Sha>
+ <Sha>d39a62deaf3aa4e03c0b7dadc320a517e0e00187</Sha>
</Dependency>
- <Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="2.0.0-beta.19324.24">
+ <Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="2.0.0-beta.19326.44">
<Uri>https://github.com/dotnet/arcade</Uri>
- <Sha>062febd818fa51e82c7192782a6b6e6429cc81c8</Sha>
+ <Sha>d39a62deaf3aa4e03c0b7dadc320a517e0e00187</Sha>
</Dependency>
- <Dependency Name="Microsoft.DotNet.Build.Tasks.Feed" Version="2.2.0-beta.19324.24">
+ <Dependency Name="Microsoft.DotNet.Build.Tasks.Feed" Version="2.2.0-beta.19326.44">
<Uri>https://github.com/dotnet/arcade</Uri>
- <Sha>062febd818fa51e82c7192782a6b6e6429cc81c8</Sha>
+ <Sha>d39a62deaf3aa4e03c0b7dadc320a517e0e00187</Sha>
</Dependency>
- <Dependency Name="Microsoft.DotNet.Build.Tasks.Packaging" Version="1.0.0-beta.19324.24">
+ <Dependency Name="Microsoft.DotNet.Build.Tasks.Packaging" Version="1.0.0-beta.19326.44">
<Uri>https://github.com/dotnet/arcade</Uri>
- <Sha>062febd818fa51e82c7192782a6b6e6429cc81c8</Sha>
+ <Sha>d39a62deaf3aa4e03c0b7dadc320a517e0e00187</Sha>
</Dependency>
<Dependency Name="Microsoft.Private.CoreFx.NETCoreApp" Version="4.6.0-preview7.19326.2">
<Uri>https://github.com/dotnet/corefx</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 6634a87f6a..a5526e3b3d 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -14,8 +14,8 @@
<UsingToolXliff>false</UsingToolXliff>
<!-- Package versions -->
<!-- arcade -->
- <MicrosoftDotNetBuildTasksFeedVersion>2.2.0-beta.19324.24</MicrosoftDotNetBuildTasksFeedVersion>
- <MicrosoftDotNetBuildTasksPackagingVersion>1.0.0-beta.19324.24</MicrosoftDotNetBuildTasksPackagingVersion>
+ <MicrosoftDotNetBuildTasksFeedVersion>2.2.0-beta.19326.44</MicrosoftDotNetBuildTasksFeedVersion>
+ <MicrosoftDotNetBuildTasksPackagingVersion>1.0.0-beta.19326.44</MicrosoftDotNetBuildTasksPackagingVersion>
<MicrosoftDotNetXUnitConsoleRunnerVersion>2.5.1-beta.19278.1</MicrosoftDotNetXUnitConsoleRunnerVersion>
<!-- corefx -->
<MicrosoftPrivateCoreFxNETCoreAppVersion>4.6.0-preview7.19326.2</MicrosoftPrivateCoreFxNETCoreAppVersion>
diff --git a/eng/common/build.ps1 b/eng/common/build.ps1
index bd428f333f..feb58d1419 100644
--- a/eng/common/build.ps1
+++ b/eng/common/build.ps1
@@ -133,8 +133,6 @@ try {
Build
}
catch {
- Write-Host $_
- Write-Host $_.Exception
Write-Host $_.ScriptStackTrace
Write-PipelineTelemetryError -Category "InitializeToolset" -Message $_
ExitWithExitCode 1
diff --git a/eng/common/build.sh b/eng/common/build.sh
index 9729655118..6236fc4d38 100755
--- a/eng/common/build.sh
+++ b/eng/common/build.sh
@@ -209,9 +209,8 @@ if [[ -n "${useInstalledDotNetCli:-}" ]]; then
use_installed_dotnet_cli="$useInstalledDotNetCli"
fi
-# Workaround for https://github.com/dotnet/arcade/issues/2673
-# if [[ "$restore" == true && -z ${DisableNativeToolsetInstalls:-} ]]; then
-# InitializeNativeTools
-# fi
+if [[ "$restore" == true && -z ${DisableNativeToolsetInstalls:-} ]]; then
+ InitializeNativeTools
+fi
Build
diff --git a/eng/common/post-build/promote-build.ps1 b/eng/common/post-build/promote-build.ps1
new file mode 100644
index 0000000000..84a608fa56
--- /dev/null
+++ b/eng/common/post-build/promote-build.ps1
@@ -0,0 +1,53 @@
+param(
+ [Parameter(Mandatory=$true)][int] $BuildId,
+ [Parameter(Mandatory=$true)][int] $ChannelId,
+ [Parameter(Mandatory=$true)][string] $BarToken,
+ [string] $MaestroEndpoint = "https://maestro-prod.westus2.cloudapp.azure.com",
+ [string] $ApiVersion = "2019-01-16"
+)
+
+$ErrorActionPreference = "Stop"
+Set-StrictMode -Version 2.0
+
+. $PSScriptRoot\..\tools.ps1
+
+function Get-Headers([string]$accept, [string]$barToken) {
+ $headers = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
+ $headers.Add('Accept',$accept)
+ $headers.Add('Authorization',"Bearer $barToken")
+ return $headers
+}
+
+try {
+ $maestroHeaders = Get-Headers 'application/json' $BarToken
+
+ # Get info about which channels the build has already been promoted to
+ $getBuildApiEndpoint = "$MaestroEndpoint/api/builds/${BuildId}?api-version=$ApiVersion"
+ $buildInfo = Invoke-WebRequest -Method Get -Uri $getBuildApiEndpoint -Headers $maestroHeaders | ConvertFrom-Json
+
+ if (!$buildInfo) {
+ Write-Host "Build with BAR ID $BuildId was not found in BAR!"
+ ExitWithExitCode 1
+ }
+
+ # Find whether the build is already assigned to the channel or not
+ if ($buildInfo.channels) {
+ foreach ($channel in $buildInfo.channels) {
+ if ($channel.Id -eq $ChannelId) {
+ Write-Host "The build with BAR ID $BuildId is already on channel $ChannelId!"
+ ExitWithExitCode 0
+ }
+ }
+ }
+
+ Write-Host "Build not present in channel $ChannelId. Promoting build ... "
+
+ $promoteBuildApiEndpoint = "$maestroEndpoint/api/channels/${ChannelId}/builds/${BuildId}?api-version=$ApiVersion"
+ Invoke-WebRequest -Method Post -Uri $promoteBuildApiEndpoint -Headers $maestroHeaders
+ Write-Host "done."
+}
+catch {
+ Write-Host "There was an error while trying to promote build '$BuildId' to channel '$ChannelId'"
+ Write-Host $_
+ Write-Host $_.ScriptStackTrace
+}
diff --git a/eng/common/sdl/extract-artifact-packages.ps1 b/eng/common/sdl/extract-artifact-packages.ps1
new file mode 100644
index 0000000000..0f6a6e49b9
--- /dev/null
+++ b/eng/common/sdl/extract-artifact-packages.ps1
@@ -0,0 +1,66 @@
+param(
+ [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where artifact packages are stored
+ [Parameter(Mandatory=$true)][string] $ExtractPath # Full path to directory where the packages will be extracted
+)
+
+$ErrorActionPreference = "Stop"
+Set-StrictMode -Version 2.0
+$ExtractPackage = {
+ param(
+ [string] $PackagePath # Full path to a NuGet package
+ )
+
+ if (!(Test-Path $PackagePath)) {
+ Write-PipelineTaskError "Input file does not exist: $PackagePath"
+ ExitWithExitCode 1
+ }
+
+ $RelevantExtensions = @(".dll", ".exe", ".pdb")
+ Write-Host -NoNewLine "Extracting" ([System.IO.Path]::GetFileName($PackagePath)) "... "
+
+ $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath)
+ $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId
+
+ Add-Type -AssemblyName System.IO.Compression.FileSystem
+
+ [System.IO.Directory]::CreateDirectory($ExtractPath);
+
+ try {
+ $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath)
+
+ $zip.Entries |
+ Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} |
+ ForEach-Object {
+ $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.Name
+
+ [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true)
+ }
+ }
+ catch {
+
+ }
+ finally {
+ $zip.Dispose()
+ }
+ }
+ function ExtractArtifacts {
+ $Jobs = @()
+ Get-ChildItem "$InputPath\*.nupkg" |
+ ForEach-Object {
+ $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName
+ }
+
+ foreach ($Job in $Jobs) {
+ Wait-Job -Id $Job.Id | Receive-Job
+ }
+}
+
+try {
+ Measure-Command { ExtractArtifacts }
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ ExitWithExitCode 1
+}
diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml
index 39a8e80838..5837f3d56d 100644
--- a/eng/common/templates/job/execute-sdl.yml
+++ b/eng/common/templates/job/execute-sdl.yml
@@ -20,6 +20,16 @@ jobs:
downloadType: specific files
matchingPattern: "**"
downloadPath: $(Build.SourcesDirectory)\artifacts
+ - powershell: eng/common/sdl/extract-artifact-packages.ps1
+ -InputPath $(Build.SourcesDirectory)\artifacts\BlobArtifacts
+ -ExtractPath $(Build.SourcesDirectory)\artifacts\BlobArtifacts
+ displayName: Extract Blob Artifacts
+ continueOnError: ${{ parameters.continueOnError }}
+ - powershell: eng/common/sdl/extract-artifact-packages.ps1
+ -InputPath $(Build.SourcesDirectory)\artifacts\PackageArtifacts
+ -ExtractPath $(Build.SourcesDirectory)\artifacts\PackageArtifacts
+ displayName: Extract Package Artifacts
+ continueOnError: ${{ parameters.continueOnError }}
- task: NuGetToolInstaller@1
displayName: 'Install NuGet.exe'
- task: NuGetCommand@2
diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml
index ff7346163f..9e77ef1b54 100644
--- a/eng/common/templates/job/publish-build-assets.yml
+++ b/eng/common/templates/job/publish-build-assets.yml
@@ -66,7 +66,6 @@ jobs:
script: |
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId)
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)"
- Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsInternalBuild)
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild)
- task: PublishBuildArtifacts@1
displayName: Publish ReleaseConfigs Artifact
diff --git a/eng/common/templates/post-build/channels/internal-servicing.yml b/eng/common/templates/post-build/channels/internal-servicing.yml
new file mode 100644
index 0000000000..99cd59b198
--- /dev/null
+++ b/eng/common/templates/post-build/channels/internal-servicing.yml
@@ -0,0 +1,167 @@
+parameters:
+ enableSymbolValidation: true
+
+stages:
+- stage: IS_Publish
+ dependsOn: validate
+ variables:
+ - template: ../common-variables.yml
+ displayName: Internal Servicing
+ jobs:
+ - template: ../setup-maestro-vars.yml
+
+ - job:
+ displayName: Symbol Publishing
+ dependsOn: setupMaestroVars
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.InternalServicing_30_Channel_Id)
+ variables:
+ - group: DotNet-Symbol-Server-Pats
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Artifacts
+ inputs:
+ downloadType: specific files
+ matchingPattern: "*Artifacts*"
+
+ - task: PowerShell@2
+ displayName: Publish
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task PublishToSymbolServers -restore -msbuildEngine dotnet
+ /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat)
+ /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
+ /p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
+ /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:Configuration=Release
+
+ - job:
+ displayName: Publish Assets
+ dependsOn: setupMaestroVars
+ variables:
+ - group: DotNet-Blob-Feed
+ - group: Publish-Build-Assets
+ - group: AzureDevOps-Artifact-Feeds-Pats
+ - name: BARBuildId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ - name: IsStableBuild
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.InternalServicing_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: current
+ artifactName: PackageArtifacts
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Blob Artifacts
+ inputs:
+ buildType: current
+ artifactName: BlobArtifacts
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Asset Manifests
+ inputs:
+ buildType: current
+ artifactName: AssetManifests
+
+ - task: PowerShell@2
+ displayName: Add Assets Location
+ env:
+ AZURE_DEVOPS_EXT_PAT: $(dn-bot-dnceng-unviersal-packages-rw)
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
+ /p:ChannelId=$(InternalServicing_30_Channel_Id)
+ /p:IsStableBuild=$(IsStableBuild)
+ /p:IsInternalBuild=$(IsInternalBuild)
+ /p:RepositoryName=$(Build.Repository.Name)
+ /p:CommitSha=$(Build.SourceVersion)
+ /p:NugetPath=$(Agent.BuildDirectory)\Nuget\NuGet.exe
+ /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:TargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
+ /p:BARBuildId=$(BARBuildId)
+ /p:MaestroApiEndpoint='https://maestro-prod.westus2.cloudapp.azure.com'
+ /p:BuildAssetRegistryToken='$(MaestroAccessToken)'
+ /p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
+ /p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
+ /p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
+ /p:Configuration=Release
+
+ - task: NuGetCommand@2
+ displayName: Publish Packages to AzDO Feed
+ condition: contains(variables['TargetAzDOFeed'], 'pkgs.visualstudio.com')
+ inputs:
+ command: push
+ vstsFeed: $(AzDoFeedName)
+ packagesToPush: $(Build.ArtifactStagingDirectory)\PackageArtifacts\*.nupkg
+ publishVstsFeed: $(AzDoFeedName)
+
+ - task: PowerShell@2
+ displayName: Publish Blobs to AzDO Feed
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-blobs-to-azdo.ps1
+ arguments: -FeedName $(AzDoFeedName)
+ -SourceFolderCollection $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -PersonalAccessToken $(dn-bot-dnceng-unviersal-packages-rw)
+ enabled: false
+
+
+- stage: IS_PublishValidation
+ displayName: Publish Validation
+ variables:
+ - template: ../common-variables.yml
+ jobs:
+ - template: ../setup-maestro-vars.yml
+
+ - ${{ if eq(parameters.enableSymbolValidation, 'true') }}:
+ - job:
+ displayName: Symbol Availability
+ dependsOn: setupMaestroVars
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.InternalServicing_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: current
+ artifactName: PackageArtifacts
+
+ - task: PowerShell@2
+ displayName: Check Symbol Availability
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/symbols-validation.ps1
+ arguments: -InputPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ -ExtractPath $(Agent.BuildDirectory)/Temp/ -DotnetSymbolVersion $(SymbolToolVersion)
+
+ - job:
+ displayName: Gather Drop
+ dependsOn: setupMaestroVars
+ variables:
+ BARBuildId: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.InternalServicing_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: PowerShell@2
+ displayName: Setup Darc CLI
+ inputs:
+ targetType: filePath
+ filePath: '$(Build.SourcesDirectory)/eng/common/darc-init.ps1'
+
+ - task: PowerShell@2
+ displayName: Run Darc gather-drop
+ inputs:
+ targetType: inline
+ script: |
+ darc gather-drop --non-shipping --continue-on-error --id $(BARBuildId) --output-dir $(Agent.BuildDirectory)/Temp/Drop/ --bar-uri https://maestro-prod.westus2.cloudapp.azure.com/ --password $(MaestroAccessToken) --latest-location
+ enabled: false
+
+ - template: ../promote-build.yml
+ parameters:
+ ChannelId: ${{ variables.InternalServicing_30_Channel_Id }}
diff --git a/eng/common/templates/post-build/channels/public-dev-release.yml b/eng/common/templates/post-build/channels/public-dev-release.yml
index c61eaa927d..79c6822db7 100644
--- a/eng/common/templates/post-build/channels/public-dev-release.yml
+++ b/eng/common/templates/post-build/channels/public-dev-release.yml
@@ -20,17 +20,10 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download PDB Artifacts
+ displayName: Download Artifacts
inputs:
- buildType: current
- artifactName: PDBArtifacts
- continueOnError: true
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Blob Artifacts
- inputs:
- buildType: current
- artifactName: BlobArtifacts
+ downloadType: specific files
+ matchingPattern: "*Artifacts*"
- task: PowerShell@2
displayName: Publish
@@ -44,13 +37,16 @@ stages:
/p:Configuration=Release
- job:
- displayName: Publish to Static Feed
+ displayName: Publish Assets
dependsOn: setupMaestroVars
variables:
- group: DotNet-Blob-Feed
- group: Publish-Build-Assets
+ - group: AzureDevOps-Artifact-Feeds-Pats
- name: BARBuildId
value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ - name: IsStableBuild
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicDevRelease_30_Channel_Id)
pool:
vmImage: 'windows-2019'
@@ -74,22 +70,47 @@ stages:
artifactName: AssetManifests
- task: PowerShell@2
- displayName: Publish
+ displayName: Add Assets Location
+ env:
+ AZURE_DEVOPS_EXT_PAT: $(dn-bot-dnceng-unviersal-packages-rw)
inputs:
filePath: eng\common\sdk-task.ps1
- arguments: -task PublishToPackageFeed -restore -msbuildEngine dotnet
- /p:AccountKeyToStaticFeed='$(dotnetfeed-storage-access-key-1)'
+ arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
+ /p:ChannelId=$(PublicDevRelease_30_Channel_Id)
+ /p:IsStableBuild=$(IsStableBuild)
+ /p:IsInternalBuild=$(IsInternalBuild)
+ /p:RepositoryName=$(Build.Repository.Name)
+ /p:CommitSha=$(Build.SourceVersion)
+ /p:NugetPath=$(Agent.BuildDirectory)\Nuget\NuGet.exe
+ /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:TargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
/p:BARBuildId=$(BARBuildId)
/p:MaestroApiEndpoint='https://maestro-prod.westus2.cloudapp.azure.com'
/p:BuildAssetRegistryToken='$(MaestroAccessToken)'
/p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:ArtifactsCategory='$(_DotNetArtifactsCategory)'
- /p:OverrideAssetsWithSameName=true
- /p:PassIfExistingItemIdentical=true
/p:Configuration=Release
+ - task: NuGetCommand@2
+ displayName: Publish Packages to AzDO Feed
+ condition: contains(variables['TargetAzDOFeed'], 'pkgs.visualstudio.com')
+ inputs:
+ command: push
+ vstsFeed: $(AzDoFeedName)
+ packagesToPush: $(Build.ArtifactStagingDirectory)\PackageArtifacts\*.nupkg
+ publishVstsFeed: $(AzDoFeedName)
+
+ - task: PowerShell@2
+ displayName: Publish Blobs to AzDO Feed
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-blobs-to-azdo.ps1
+ arguments: -FeedName $(AzDoFeedName)
+ -SourceFolderCollection $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -PersonalAccessToken $(dn-bot-dnceng-unviersal-packages-rw)
+ enabled: false
+
- stage: PublishValidation
displayName: Publish Validation
@@ -140,6 +161,6 @@ stages:
script: |
darc gather-drop --non-shipping --continue-on-error --id $(BARBuildId) --output-dir $(Agent.BuildDirectory)/Temp/Drop/ --bar-uri https://maestro-prod.westus2.cloudapp.azure.com/ --password $(MaestroAccessToken) --latest-location
- - template: ../promote-build.yml
- parameters:
+ - template: ../promote-build.yml
+ parameters:
ChannelId: ${{ variables.PublicDevRelease_30_Channel_Id }}
diff --git a/eng/common/templates/post-build/channels/public-release.yml b/eng/common/templates/post-build/channels/public-release.yml
new file mode 100644
index 0000000000..f23eb3f541
--- /dev/null
+++ b/eng/common/templates/post-build/channels/public-release.yml
@@ -0,0 +1,167 @@
+parameters:
+ enableSymbolValidation: true
+
+stages:
+- stage: PubRel_Publish
+ dependsOn: validate
+ variables:
+ - template: ../common-variables.yml
+ displayName: Public Release
+ jobs:
+ - template: ../setup-maestro-vars.yml
+
+ - job:
+ displayName: Symbol Publishing
+ dependsOn: setupMaestroVars
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicRelease_30_Channel_Id)
+ variables:
+ - group: DotNet-Symbol-Server-Pats
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Artifacts
+ inputs:
+ downloadType: specific files
+ matchingPattern: "*Artifacts*"
+
+ - task: PowerShell@2
+ displayName: Publish
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task PublishToSymbolServers -restore -msbuildEngine dotnet
+ /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat)
+ /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
+ /p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
+ /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:Configuration=Release
+
+ - job:
+ displayName: Publish Assets
+ dependsOn: setupMaestroVars
+ variables:
+ - group: DotNet-Blob-Feed
+ - group: Publish-Build-Assets
+ - group: AzureDevOps-Artifact-Feeds-Pats
+ - name: BARBuildId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ - name: IsStableBuild
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicRelease_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: current
+ artifactName: PackageArtifacts
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Blob Artifacts
+ inputs:
+ buildType: current
+ artifactName: BlobArtifacts
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Asset Manifests
+ inputs:
+ buildType: current
+ artifactName: AssetManifests
+
+ - task: PowerShell@2
+ displayName: Publish
+ env:
+ AZURE_DEVOPS_EXT_PAT: $(dn-bot-dnceng-unviersal-packages-rw)
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
+ /p:ChannelId=$(PublicRelease_30_Channel_Id)
+ /p:IsStableBuild=$(IsStableBuild)
+ /p:IsInternalBuild=$(IsInternalBuild)
+ /p:RepositoryName=$(Build.Repository.Name)
+ /p:CommitSha=$(Build.SourceVersion)
+ /p:NugetPath=$(Agent.BuildDirectory)/Nuget/NuGet.exe
+ /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:TargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
+ /p:BARBuildId=$(BARBuildId)
+ /p:MaestroApiEndpoint='https://maestro-prod.westus2.cloudapp.azure.com'
+ /p:BuildAssetRegistryToken='$(MaestroAccessToken)'
+ /p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
+ /p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
+ /p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
+ /p:Configuration=Release
+
+ - task: NuGetCommand@2
+ displayName: Publish Packages to AzDO Feed
+ condition: contains(variables['TargetAzDOFeed'], 'pkgs.visualstudio.com')
+ inputs:
+ command: push
+ vstsFeed: $(AzDoFeedName)
+ packagesToPush: $(Build.ArtifactStagingDirectory)\PackageArtifacts\*.nupkg
+ publishVstsFeed: $(AzDoFeedName)
+
+ - task: PowerShell@2
+ displayName: Publish Blobs to AzDO Feed
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-blobs-to-azdo.ps1
+ arguments: -FeedName $(AzDoFeedName)
+ -SourceFolderCollection $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -PersonalAccessToken $(dn-bot-dnceng-unviersal-packages-rw)
+ enabled: false
+
+
+- stage: PubRel_PublishValidation
+ displayName: Publish Validation
+ variables:
+ - template: ../common-variables.yml
+ jobs:
+ - template: ../setup-maestro-vars.yml
+
+ - ${{ if eq(parameters.enableSymbolValidation, 'true') }}:
+ - job:
+ displayName: Symbol Availability
+ dependsOn: setupMaestroVars
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicRelease_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: current
+ artifactName: PackageArtifacts
+
+ - task: PowerShell@2
+ displayName: Check Symbol Availability
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/symbols-validation.ps1
+ arguments: -InputPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ -ExtractPath $(Agent.BuildDirectory)/Temp/ -DotnetSymbolVersion $(SymbolToolVersion)
+
+ - job:
+ displayName: Gather Drop
+ dependsOn: setupMaestroVars
+ variables:
+ BARBuildId: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicRelease_30_Channel_Id)
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: PowerShell@2
+ displayName: Setup Darc CLI
+ inputs:
+ targetType: filePath
+ filePath: '$(Build.SourcesDirectory)/eng/common/darc-init.ps1'
+
+ - task: PowerShell@2
+ displayName: Run Darc gather-drop
+ inputs:
+ targetType: inline
+ script: |
+ darc gather-drop --non-shipping --continue-on-error --id $(BARBuildId) --output-dir $(Agent.BuildDirectory)/Temp/Drop/ --bar-uri https://maestro-prod.westus2.cloudapp.azure.com/ --password $(MaestroAccessToken) --latest-location
+ enabled: false
+
+ - template: ../promote-build.yml
+ parameters:
+ ChannelId: ${{ variables.PublicRelease_30_Channel_Id }}
diff --git a/eng/common/templates/post-build/channels/public-validation-release.yml b/eng/common/templates/post-build/channels/public-validation-release.yml
index 23725c6d62..114477d3ad 100644
--- a/eng/common/templates/post-build/channels/public-validation-release.yml
+++ b/eng/common/templates/post-build/channels/public-validation-release.yml
@@ -8,14 +8,17 @@ stages:
- template: ../setup-maestro-vars.yml
- job:
- displayName: Publish to Static Feed
+ displayName: Publish Assets
dependsOn: setupMaestroVars
- condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicValidationRelease_30_Channel_Id)
variables:
- group: DotNet-Blob-Feed
- group: Publish-Build-Assets
+ - group: AzureDevOps-Artifact-Feeds-Pats
- name: BARBuildId
value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
+ - name: IsStableBuild
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
+ condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], variables.PublicValidationRelease_30_Channel_Id)
pool:
vmImage: 'windows-2019'
steps:
@@ -38,21 +41,46 @@ stages:
artifactName: AssetManifests
- task: PowerShell@2
- displayName: Publish
+ displayName: Add Assets Location
+ env:
+ AZURE_DEVOPS_EXT_PAT: $(dn-bot-dnceng-unviersal-packages-rw)
inputs:
filePath: eng\common\sdk-task.ps1
- arguments: -task PublishToPackageFeed -restore -msbuildEngine dotnet
- /p:AccountKeyToStaticFeed='$(dotnetfeed-storage-access-key-1)'
+ arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
+ /p:ChannelId=$(PublicValidationRelease_30_Channel_Id)
+ /p:IsStableBuild=$(IsStableBuild)
+ /p:IsInternalBuild=$(IsInternalBuild)
+ /p:RepositoryName=$(Build.Repository.Name)
+ /p:CommitSha=$(Build.SourceVersion)
+ /p:NugetPath=$(Agent.BuildDirectory)\Nuget\NuGet.exe
+ /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:TargetFeedPAT='$(dn-bot-dnceng-unviersal-packages-rw)'
+ /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
/p:BARBuildId=$(BARBuildId)
/p:MaestroApiEndpoint='https://maestro-prod.westus2.cloudapp.azure.com'
/p:BuildAssetRegistryToken='$(MaestroAccessToken)'
/p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
- /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
- /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:ArtifactsCategory='$(_DotNetArtifactsCategory)'
- /p:OverrideAssetsWithSameName=true
- /p:PassIfExistingItemIdentical=true
+ /p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
+ /p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
/p:Configuration=Release
+
+ - task: NuGetCommand@2
+ displayName: Publish Packages to AzDO Feed
+ condition: contains(variables['TargetAzDOFeed'], 'pkgs.visualstudio.com')
+ inputs:
+ command: push
+ vstsFeed: $(AzDoFeedName)
+ packagesToPush: $(Build.ArtifactStagingDirectory)\PackageArtifacts\*.nupkg
+ publishVstsFeed: $(AzDoFeedName)
+
+ - task: PowerShell@2
+ displayName: Publish Blobs to AzDO Feed
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-blobs-to-azdo.ps1
+ arguments: -FeedName $(AzDoFeedName)
+ -SourceFolderCollection $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -PersonalAccessToken $(dn-bot-dnceng-unviersal-packages-rw)
+ enabled: false
- stage: PVR_PublishValidation
@@ -86,6 +114,6 @@ stages:
script: |
darc gather-drop --non-shipping --continue-on-error --id $(BARBuildId) --output-dir $(Agent.BuildDirectory)/Temp/Drop/ --bar-uri https://maestro-prod.westus2.cloudapp.azure.com --password $(MaestroAccessToken) --latest-location
- - template: ../promote-build.yml
- parameters:
+ - template: ../promote-build.yml
+ parameters:
ChannelId: ${{ variables.PublicValidationRelease_30_Channel_Id }}
diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml
index 97b48d97fe..8283467352 100644
--- a/eng/common/templates/post-build/common-variables.yml
+++ b/eng/common/templates/post-build/common-variables.yml
@@ -5,5 +5,14 @@ variables:
# .NET Tools - Validation
PublicValidationRelease_30_Channel_Id: 9
+ # .NET Core 3.0 Internal Servicing
+ InternalServicing_30_Channel_Id: 184
+
+ # .NET Core 3.0 Release
+ PublicRelease_30_Channel_Id: 19
+
+ # Whether the build is internal or not
+ IsInternalBuild: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}
+
SourceLinkCLIVersion: 3.0.0
SymbolToolVersion: 1.0.1
diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml
index 2c411dd009..3d7e6776e6 100644
--- a/eng/common/templates/post-build/post-build.yml
+++ b/eng/common/templates/post-build/post-build.yml
@@ -65,3 +65,7 @@ stages:
enableSymbolValidation: ${{ parameters.enableSymbolValidation }}
- template: \eng\common\templates\post-build\channels\public-validation-release.yml
+
+- template: \eng\common\templates\post-build\channels\public-release.yml
+
+- template: \eng\common\templates\post-build\channels\internal-servicing.yml
diff --git a/eng/common/templates/post-build/promote-build.yml b/eng/common/templates/post-build/promote-build.yml
index d00317003b..af48b0b339 100644
--- a/eng/common/templates/post-build/promote-build.yml
+++ b/eng/common/templates/post-build/promote-build.yml
@@ -18,11 +18,7 @@ jobs:
- task: PowerShell@2
displayName: Add Build to Channel
inputs:
- targetType: inline
- script: |
- $headers = @{
- "Accept" = "application/json"
- "Authorization" = "Bearer $(MaestroAccessToken)"
- }
- Invoke-RestMethod -Method Post -Headers $headers -Uri https://maestro-prod.westus2.cloudapp.azure.com/api/channels/$(ChannelId)/builds/$(BARBuildId)?api-version=2019-01-16
- enabled: false
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/promote-build.ps1
+ arguments: -BuildId $(BARBuildId)
+ -ChannelId $(ChannelId)
+ -BarToken $(MaestroAccessToken)
diff --git a/eng/common/templates/post-build/setup-maestro-vars.yml b/eng/common/templates/post-build/setup-maestro-vars.yml
index 0eddd6cd3b..f6120dc1e1 100644
--- a/eng/common/templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/templates/post-build/setup-maestro-vars.yml
@@ -28,10 +28,8 @@ jobs:
$Channels = ""
$Content | Select -Index 1 | ForEach-Object { $Channels += "$_ ," }
- $IsInternalBuild = $Content | Select -Index 2
- $IsStableBuild = $Content | Select -Index 3
+ $IsStableBuild = $Content | Select -Index 2
Write-PipelineSetVariable -Name 'BARBuildId' -Value $BarId
Write-PipelineSetVariable -Name 'InitialChannels' -Value "$Channels"
- Write-PipelineSetVariable -Name 'IsInternalBuild' -Value $IsInternalBuild
Write-PipelineSetVariable -Name 'IsStableBuild' -Value $IsStableBuild
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index bdd87111e4..60741f0390 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -147,12 +147,10 @@ function InitializeDotNetCli([bool]$install) {
# It also ensures that VS msbuild will use the downloaded sdk targets.
$env:PATH = "$dotnetRoot;$env:PATH"
- if ($ci) {
- # Make Sure that our bootstrapped dotnet cli is avaliable in future steps of the Azure Pipelines build
- Write-Host "##vso[task.prependpath]$dotnetRoot"
- Write-Host "##vso[task.setvariable variable=DOTNET_MULTILEVEL_LOOKUP]0"
- Write-Host "##vso[task.setvariable variable=DOTNET_SKIP_FIRST_TIME_EXPERIENCE]1"
- }
+ # Make Sure that our bootstrapped dotnet cli is avaliable in future steps of the Azure Pipelines build
+ Write-PipelinePrependPath -Path $dotnetRoot
+ Write-PipelineSetVariable -Name 'DOTNET_MULTILEVEL_LOOKUP' -Value '0'
+ Write-PipelineSetVariable -Name 'DOTNET_SKIP_FIRST_TIME_EXPERIENCE' -Value '1'
return $global:_DotNetInstallDir = $dotnetRoot
}
@@ -575,11 +573,8 @@ Create-Directory $ToolsetDir
Create-Directory $TempDir
Create-Directory $LogDir
-if ($ci) {
- Write-Host "##vso[task.setvariable variable=Artifacts]$ArtifactsDir"
- Write-Host "##vso[task.setvariable variable=Artifacts.Toolset]$ToolsetDir"
- Write-Host "##vso[task.setvariable variable=Artifacts.Log]$LogDir"
-
- $env:TEMP = $TempDir
- $env:TMP = $TempDir
-}
+Write-PipelineSetVariable -Name 'Artifacts' -Value $ArtifactsDir
+Write-PipelineSetVariable -Name 'Artifacts.Toolset' -Value $ToolsetDir
+Write-PipelineSetVariable -Name 'Artifacts.Log' -Value $LogDir
+Write-PipelineSetVariable -Name 'TEMP' -Value $TempDir
+Write-PipelineSetVariable -Name 'TMP' -Value $TempDir
diff --git a/global.json b/global.json
index 7788bc63ea..317a7231d5 100644
--- a/global.json
+++ b/global.json
@@ -7,8 +7,8 @@
"python": "2.7.15"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19324.24",
- "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19324.24",
+ "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19326.44",
+ "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19326.44",
"Microsoft.Build.NoTargets": "1.0.53",
"Microsoft.Build.Traversal": "2.0.2"
}