Skip to content

Commit

Permalink
Merged PR 28438: [backport/v7.4.0] Copy azure blob with PowerShell gl…
Browse files Browse the repository at this point in the history
…obal tool to private blob and move to CDN d...

Copy azure blob with PowerShell global tool to private blob and move to CDN during release (#20659)
  • Loading branch information
TravisEz13 committed Nov 10, 2023
1 parent 8fb2e4c commit 72d29a1
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 17 deletions.
60 changes: 44 additions & 16 deletions tools/releaseBuild/azureDevOps/releasePipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,8 @@ stages:
Update and merge the changelog for the release.
This step is required for creating GitHub draft release.
- stage: GitHubDraftRelease
displayName: Create GitHub draft release
- stage: BlobPublic
displayName: Make Blob Public
# do not include stages that are likely to fail in dependency as there is no way to force deploy.
dependsOn: UpdateChangeLog

Expand All @@ -314,6 +314,38 @@ stages:
steps:
- template: templates/release-MakeContainerPublic.yml

- template: templates/release/approvalJob.yml
parameters:
displayName: Copy Global tool packages to PSInfra storage
jobName: CopyBlobApproval
instructions: |
Approval for Copy global tool packages to PSInfra storage
- job: PSInfraBlobPublic
displayName: Copy global tools to PSInfra storage
dependsOn: CopyBlobApproval

pool:
name: PowerShell1ES
demands:
- ImageOverride -equals PSMMS2019-Secure

variables:
- group: 'PSInfraStorage'

steps:
- template: templates/release-CopyGlobalTools.yml
parameters:
sourceContainerName: 'tool-private'
destinationContainerName: 'tool'
sourceStorageAccountName: '$(GlobalToolStorageAccount)'
destinationStorageAccountName: '$(PSInfraStorageAccount)'
blobPrefix: '$(Version)'

- stage: GitHubTasks
displayName: GitHub tasks
dependsOn: BlobPublic
jobs:
- job: GitHubDraft
displayName: Create GitHub Draft release

Expand All @@ -326,28 +358,24 @@ stages:
- group: 'Azure Blob variable group'
- group: 'AzDevOpsArtifacts'
- group: ReleasePipelineSecrets
dependsOn: AzureBlobPublic
steps:
- template: templates/release-CreateGitHubDraft.yml

- stage: GitHubManualTasks
displayName: GitHub manual tasks
dependsOn: GitHubDraftRelease
jobs:
- deployment: PushTag
dependsOn: GitHubDraft
displayName: Push Git Tag
pool : server
environment: PSReleasePushTag

- deployment: MakeDraftPublic
dependsOn: PushTag
displayName: Make GitHub Draft public
pool : server
environment: PSReleaseDraftPublic
dependsOn: PushTag

- stage: PublishPackages
displayName: Publish packages
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
jobs:
- job: PublishNuget

Expand Down Expand Up @@ -405,7 +433,7 @@ stages:
- stage: ReleaseDocker
displayName: Release Docker
dependsOn:
- GitHubManualTasks
- GitHubTasks
jobs:
- deployment: ReleaseDocker
displayName: Release Docker
Expand Down Expand Up @@ -504,7 +532,7 @@ stages:
Notify the PM team to start the process of releasing to MU.
- stage: UpdateDotnetDocker
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Update DotNet SDK Docker images
jobs:
- template: templates/release/approvalJob.yml
Expand All @@ -519,7 +547,7 @@ stages:
4. create PR targeting nightly branch
- stage: UpdateWinGet
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Add manifest entry to winget
jobs:
- template: templates/release/approvalJob.yml
Expand All @@ -530,7 +558,7 @@ stages:
This is typically done by the community 1-2 days after the release.
- stage: PublishMsix
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Publish MSIX to store
jobs:
- template: templates/release/approvalJob.yml
Expand All @@ -541,7 +569,7 @@ stages:
Ask Steve to release MSIX bundle package to Store
- stage: BuildInfoJson
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Upload BuildInfoJson
jobs:
- deployment: UploadJson
Expand All @@ -562,7 +590,7 @@ stages:
- template: templates/release-BuildJson.yml

- stage: ReleaseVPack
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Release VPack
jobs:
- job: KickoffvPack
Expand Down Expand Up @@ -611,7 +639,7 @@ stages:
}
- stage: ReleaseDeps
dependsOn: GitHubManualTasks
dependsOn: GitHubTasks
displayName: Update pwsh.deps.json links
jobs:
- template: templates/release-UpdateDepsJson.yml
Expand Down
2 changes: 1 addition & 1 deletion tools/releaseBuild/azureDevOps/templates/nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ jobs:
azureSubscription: '$(GlobalToolSubscription)'
Destination: AzureBlob
storage: '$(GlobalToolStorageAccount)'
ContainerName: 'tool'
ContainerName: 'tool-private'
blobPrefix: '$(Version)'
condition: and(succeeded(), eq(variables['SHOULD_SIGN'], 'true'))
retryCountOnTaskFailure: 2
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
parameters:
- name: sourceContainerName
type: string
default: 'source-container'

- name: destinationContainerName
type: string
default: 'destination-container'

- name: sourceStorageAccountName
type: string
default: 'source-storage-account'

- name: destinationStorageAccountName
type: string
default: 'destination-storage-account'

- name: blobPrefix
type: string
default: '$(Version)'

steps:
- template: release-SetReleaseTagAndContainerName.yml

- pwsh: |
Import-module '$(BUILD.SOURCESDIRECTORY)/build.psm1'
Install-AzCopy
displayName: Install AzCopy
retryCountOnTaskFailure: 2

- pwsh: |
Import-module '$(BUILD.SOURCESDIRECTORY)/build.psm1'
$azcopy = Find-AzCopy
Write-Verbose -Verbose "Found AzCopy: $azcopy"
$sourceContainerName = "${{ parameters.sourceContainerName }}"
$destinationContainerName = "${{ parameters.destinationContainerName }}"
$sourceStorageAccountName = "${{ parameters.sourceStorageAccountName }}"
$destinationStorageAccountName = "${{ parameters.destinationStorageAccountName }}"
$blobPrefix = "${{ parameters.blobPrefix }}"
$sourceBlobUrl = "https://${sourceStorageAccountName}.blob.core.windows.net/${sourceContainerName}/${blobPrefix}"
Write-Verbose -Verbose "Source blob url: $sourceBlobUrl"
$destinationBlobUrl = "https://${destinationStorageAccountName}.blob.core.windows.net/${destinationContainerName}"
Write-Verbose -Verbose "Destination blob url: $destinationBlobUrl"
& $azcopy cp $sourceBlobUrl $destinationBlobUrl --recursive
$packagesPath = Get-ChildItem -Path $(System.ArtifactsDirectory)\*.deb -Recurse -File | Select-Object -First 1 -ExpandProperty DirectoryName
Write-Host "sending -- vso[task.setvariable variable=PackagesRoot]$packagesPath"
Write-Host "##vso[task.setvariable variable=PackagesRoot]$packagesPath"
displayName: Copy blobs
retryCountOnTaskFailure: 2
env:
AZCOPY_AUTO_LOGIN_TYPE: MSI
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,9 @@ steps:
$vstsCommandString = "vso[task.setvariable variable=AzureVersion]$azureVersion"
Write-Host "sending " + $vstsCommandString
Write-Host "##$vstsCommandString"
$version = '$(ReleaseTag)'.ToLowerInvariant().Substring(1)
$vstsCommandString = "vso[task.setvariable variable=Version]$version"
Write-Host ("sending " + $vstsCommandString)
Write-Host "##$vstsCommandString"
displayName: Set container name

0 comments on commit 72d29a1

Please sign in to comment.