msbuild
43 строки · 1.5 Кб
1parameters:
2- name: federatedServiceConnection
3type: string
4- name: outputVariableName
5type: string
6- name: expiryInHours
7type: number
8default: 1
9- name: base64Encode
10type: boolean
11default: false
12- name: storageAccount
13type: string
14- name: container
15type: string
16- name: permissions
17type: string
18default: 'rl'
19
20steps:
21- task: AzureCLI@2
22displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}'
23inputs:
24azureSubscription: ${{ parameters.federatedServiceConnection }}
25scriptType: 'pscore'
26scriptLocation: 'inlineScript'
27inlineScript: |
28# Calculate the expiration of the SAS token and convert to UTC
29$expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
30
31$sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv
32
33if ($LASTEXITCODE -ne 0) {
34Write-Error "Failed to generate SAS token."
35exit 1
36}
37
38if ('${{ parameters.base64Encode }}' -eq 'true') {
39$sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas))
40}
41
42Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
43Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas"
44