-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci/rel: publish symbols using the internal symbol request API instead (…
…#16991) Work is ongoing to remove individually-authenticated service accounts from some pipelines. This moves us closer to that goal. Tested in Nightly 2403.28002.
- Loading branch information
Showing
5 changed files
with
130 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
117 changes: 117 additions & 0 deletions
117
build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
parameters: | ||
- name: includePublicSymbolServer | ||
type: boolean | ||
default: false | ||
- name: pool | ||
type: object | ||
default: [] | ||
- name: dependsOn | ||
type: object | ||
default: null | ||
- name: artifactStem | ||
type: string | ||
default: '' | ||
- name: jobName | ||
type: string | ||
default: PublishSymbols | ||
- name: symbolExpiryTime | ||
type: string | ||
default: 36530 # This is the default from PublishSymbols@2 | ||
- name: variables | ||
type: object | ||
default: {} | ||
- name: subscription | ||
type: string | ||
- name: symbolProject | ||
type: string | ||
|
||
jobs: | ||
- job: ${{ parameters.jobName }} | ||
${{ if ne(length(parameters.pool), 0) }}: | ||
pool: ${{ parameters.pool }} | ||
${{ if eq(parameters.includePublicSymbolServer, true) }}: | ||
displayName: Publish Symbols to Internal and MSDL | ||
${{ else }}: | ||
displayName: Publish Symbols Internally | ||
dependsOn: ${{ parameters.dependsOn }} | ||
variables: | ||
${{ insert }}: ${{ parameters.variables }} | ||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 1 | ||
fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here | ||
submodules: true | ||
persistCredentials: True | ||
|
||
- task: PkgESSetupBuild@12 | ||
displayName: Package ES - Setup Build | ||
inputs: | ||
disableOutputRedirect: true | ||
|
||
- task: DownloadPipelineArtifact@2 | ||
displayName: Download all PDBs from all prior build phases | ||
inputs: | ||
itemPattern: '**/*.pdb' | ||
targetPath: '$(Build.SourcesDirectory)/bin' | ||
|
||
- powershell: |- | ||
Get-PackageProvider -Name NuGet -ForceBootstrap | ||
Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute | ||
displayName: Install Azure Module Dependencies | ||
# Transit the Azure token from the Service Connection into a secret variable for the rest of the pipeline to use. | ||
- task: AzurePowerShell@5 | ||
displayName: Generate an Azure Token | ||
inputs: | ||
azureSubscription: ${{ parameters.subscription }} | ||
azurePowerShellVersion: LatestVersion | ||
pwsh: true | ||
ScriptType: InlineScript | ||
Inline: |- | ||
$AzToken = (Get-AzAccessToken -ResourceUrl api://30471ccf-0966-45b9-a979-065dbedb24c1).Token | ||
Write-Host "##vso[task.setvariable variable=SymbolAccessToken;issecret=true]$AzToken" | ||
- task: PublishSymbols@2 | ||
displayName: Publish Symbols (to current Azure DevOps tenant) | ||
continueOnError: True | ||
inputs: | ||
SymbolsFolder: '$(Build.SourcesDirectory)/bin' | ||
SearchPattern: '**/*.pdb' | ||
IndexSources: false | ||
DetailedLog: true | ||
SymbolsMaximumWaitTime: 30 | ||
SymbolServerType: 'TeamServices' | ||
SymbolsProduct: 'Windows Terminal Converged Symbols' | ||
SymbolsVersion: '$(XES_APPXMANIFESTVERSION)' | ||
SymbolsArtifactName: 'WindowsTerminal_$(XES_APPXMANIFESTVERSION)' | ||
SymbolExpirationInDays: ${{ parameters.symbolExpiryTime }} | ||
env: | ||
LIB: $(Build.SourcesDirectory) | ||
|
||
- pwsh: |- | ||
# Prepare the defaults for IRM | ||
$PSDefaultParameterValues['Invoke-RestMethod:Headers'] = @{ Authorization = "Bearer $(SymbolAccessToken)" } | ||
$PSDefaultParameterValues['Invoke-RestMethod:ContentType'] = "application/json" | ||
$PSDefaultParameterValues['Invoke-RestMethod:Method'] = "POST" | ||
$BaseUri = "https://symbolrequestprod.trafficmanager.net/projects/${{ parameters.symbolProject }}/requests" | ||
# Prepare the request | ||
$expiration = (Get-Date).Add([TimeSpan]::FromDays(${{ parameters.symbolExpiryTime }})) | ||
$createRequestBody = @{ | ||
requestName = "WindowsTerminal_$(XES_APPXMANIFESTVERSION)"; | ||
expirationTime = $expiration.ToString(); | ||
} | ||
Write-Host "##[debug]Starting request $($createRequestBody.requestName) with expiration date of $($createRequestBody.expirationTime)" | ||
Invoke-RestMethod -Uri "$BaseUri" -Body ($createRequestBody | ConvertTo-Json -Compress) -Verbose | ||
# Request symbol publication | ||
$publishRequestBody = @{ | ||
publishToInternalServer = $true; | ||
publishToPublicServer = $${{ parameters.includePublicSymbolServer }}; | ||
} | ||
Write-Host "##[debug]Submitting request $($createRequestBody.requestName) ($($publishRequestBody | ConvertTo-Json -Compress))" | ||
Invoke-RestMethod -Uri "$BaseUri/$($createRequestBody.requestName)" -Body ($publishRequestBody | ConvertTo-Json -Compress) -Verbose | ||
displayName: Publish Symbols using internal REST API |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters