mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-11 04:38:24 -06:00
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.
This commit is contained in:
parent
04fa18de71
commit
2bcbe6b492
2
.github/actions/spelling/allow/microsoft.txt
vendored
2
.github/actions/spelling/allow/microsoft.txt
vendored
@ -32,6 +32,7 @@ DWINRT
|
|||||||
enablewttlogging
|
enablewttlogging
|
||||||
HOMESHARE
|
HOMESHARE
|
||||||
Intelli
|
Intelli
|
||||||
|
issecret
|
||||||
IVisual
|
IVisual
|
||||||
libucrt
|
libucrt
|
||||||
libucrtd
|
libucrtd
|
||||||
@ -74,6 +75,7 @@ sid
|
|||||||
Skype
|
Skype
|
||||||
SRW
|
SRW
|
||||||
sxs
|
sxs
|
||||||
|
symbolrequestprod
|
||||||
Sysinternals
|
Sysinternals
|
||||||
sysnative
|
sysnative
|
||||||
systemroot
|
systemroot
|
||||||
|
|||||||
@ -33,6 +33,8 @@ extends:
|
|||||||
publishSymbolsToPublic: true
|
publishSymbolsToPublic: true
|
||||||
publishVpackToWindows: false
|
publishVpackToWindows: false
|
||||||
symbolExpiryTime: 15
|
symbolExpiryTime: 15
|
||||||
|
symbolPublishingSubscription: $(SymbolPublishingServiceConnection)
|
||||||
|
symbolPublishingProject: $(SymbolPublishingProject)
|
||||||
${{ if eq(true, parameters.publishToAzure) }}:
|
${{ if eq(true, parameters.publishToAzure) }}:
|
||||||
extraPublishJobs:
|
extraPublishJobs:
|
||||||
- template: build/pipelines/templates-v2/job-deploy-to-azure-storage.yml@self
|
- template: build/pipelines/templates-v2/job-deploy-to-azure-storage.yml@self
|
||||||
|
|||||||
@ -81,3 +81,5 @@ extends:
|
|||||||
terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }}
|
terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }}
|
||||||
publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }}
|
publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }}
|
||||||
publishVpackToWindows: ${{ parameters.publishVpackToWindows }}
|
publishVpackToWindows: ${{ parameters.publishVpackToWindows }}
|
||||||
|
symbolPublishingSubscription: $(SymbolPublishingServiceConnection)
|
||||||
|
symbolPublishingProject: $(SymbolPublishingProject)
|
||||||
|
|||||||
@ -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
|
||||||
@ -52,6 +52,10 @@ parameters:
|
|||||||
- name: publishVpackToWindows
|
- name: publishVpackToWindows
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
- name: symbolPublishingSubscription
|
||||||
|
type: string
|
||||||
|
- name: symbolPublishingProject
|
||||||
|
type: string
|
||||||
|
|
||||||
- name: extraPublishJobs
|
- name: extraPublishJobs
|
||||||
type: object
|
type: object
|
||||||
@ -248,12 +252,13 @@ extends:
|
|||||||
displayName: Publish
|
displayName: Publish
|
||||||
dependsOn: [Build]
|
dependsOn: [Build]
|
||||||
jobs:
|
jobs:
|
||||||
- template: ./build/pipelines/templates-v2/job-publish-symbols.yml@self
|
- template: ./build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml@self
|
||||||
parameters:
|
parameters:
|
||||||
pool: { type: windows }
|
pool: { type: windows }
|
||||||
includePublicSymbolServer: ${{ parameters.publishSymbolsToPublic }}
|
includePublicSymbolServer: ${{ parameters.publishSymbolsToPublic }}
|
||||||
symbolPatGoesInTaskInputs: true # onebranch tries to muck with the PAT variable, so we need to change how it get the PAT
|
|
||||||
symbolExpiryTime: ${{ parameters.symbolExpiryTime }}
|
symbolExpiryTime: ${{ parameters.symbolExpiryTime }}
|
||||||
|
subscription: ${{ parameters.symbolPublishingSubscription }}
|
||||||
|
symbolProject: ${{ parameters.symbolPublishingProject }}
|
||||||
variables:
|
variables:
|
||||||
ob_git_checkout: false # This job checks itself out
|
ob_git_checkout: false # This job checks itself out
|
||||||
ob_git_skip_checkout_none: true
|
ob_git_skip_checkout_none: true
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user