Patch Tuesday for May 2024 (Again) (#38891)

* Update AzCopy, PowerShell Core, and VS.
This commit is contained in:
Billy O'Neal 2024-05-24 22:22:47 -07:00 committed by GitHub
parent 7fd2b83b10
commit 01f6021959
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 60 additions and 67 deletions

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.4
# DisableDockerDetector "Used to build the container deployed to Azure Container Registry" # DisableDockerDetector "Used to build the container deployed to Azure Container Registry"
FROM ubuntu:focal-20240216 FROM ubuntu:focal-20240427
ADD https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb /packages-microsoft-prod.deb ADD https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb /packages-microsoft-prod.deb
ADD https://dl.google.com/android/repository/android-ndk-r25c-linux.zip /android-ndk-r25c-linux.zip ADD https://dl.google.com/android/repository/android-ndk-r25c-linux.zip /android-ndk-r25c-linux.zip

View File

@ -2,11 +2,7 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# #
variables: variables:
linux-pool: 'PrLin-1ES-Pool' linux-docker-image: 'vcpkgandroidwus3.azurecr.io/vcpkg-android:2024-05-17'
windows-pool: 'PrWin-1ES'
osx-pool: 'PrOsx-2024-01-18'
osx-arm64-pool: 'PrOsx-2024-01-22-arm64'
linux-docker-image: 'vcpkgandroidwus3.azurecr.io/vcpkg-android:2024-04-11'
parameters: parameters:
- name: vcpkgToolSha - name: vcpkgToolSha
@ -37,70 +33,62 @@ jobs:
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: x86_windows jobName: x86_windows
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: x64_windows jobName: x64_windows
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: x64_windows_static jobName: x64_windows_static
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: x64_windows_static_md jobName: x64_windows_static_md
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: x64_uwp jobName: x64_uwp
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: arm64_windows jobName: arm64_windows
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: windows/azure-pipelines.yml - template: windows/azure-pipelines.yml
parameters: parameters:
jobName: arm64_uwp jobName: arm64_uwp
poolName: $(windows-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: osx/azure-pipelines.yml - template: osx/azure-pipelines.yml
parameters: parameters:
jobName: x64_osx jobName: x64_osx
poolName: $(osx-pool) poolName: 'PrOsx-2024-01-18'
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: osx/azure-pipelines.yml - template: osx/azure-pipelines.yml
parameters: parameters:
jobName: arm64_osx jobName: arm64_osx
poolName: $(osx-arm64-pool) poolName: 'PrOsx-2024-01-22-arm64'
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}
- template: linux/azure-pipelines.yml - template: linux/azure-pipelines.yml
parameters: parameters:
jobName: x64_linux jobName: x64_linux
poolName: $(linux-pool)
vcpkgToolSha: ${{ parameters.vcpkgToolSha }} vcpkgToolSha: ${{ parameters.vcpkgToolSha }}
tripletPattern: ${{ parameters.tripletPattern }} tripletPattern: ${{ parameters.tripletPattern }}

View File

@ -10,8 +10,6 @@ parameters:
- name: jobName - name: jobName
type: string type: string
default: 'x64_linux' default: 'x64_linux'
- name: poolName
type: string
- name: tripletPattern - name: tripletPattern
displayName: 'Enable the triplets which contain this substring' displayName: 'Enable the triplets which contain this substring'
type: string type: string
@ -21,7 +19,7 @@ jobs:
- job: x64_linux - job: x64_linux
condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}')) condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}'))
pool: pool:
name: ${{ parameters.poolName }} name: PrLin-1ES-Pool
workspace: workspace:
clean: resources clean: resources
timeoutInMinutes: 1440 # 1 day timeoutInMinutes: 1440 # 1 day

View File

@ -10,8 +10,6 @@ parameters:
- name: jobName - name: jobName
type: string type: string
default: 'x86_windows' default: 'x86_windows'
- name: poolName
type: string
- name: tripletPattern - name: tripletPattern
displayName: 'Enable the triplets which contain this substring' displayName: 'Enable the triplets which contain this substring'
type: string type: string
@ -21,7 +19,8 @@ jobs:
- job: ${{ parameters.jobName }} - job: ${{ parameters.jobName }}
condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}')) condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}'))
pool: pool:
name: ${{ parameters.poolName }} name: PrWin-1ES
demands: ImageVersionOverride -equals 2024.05.24
workspace: workspace:
clean: resources clean: resources
timeoutInMinutes: 2880 # 2 days timeoutInMinutes: 2880 # 2 days

View File

@ -24,7 +24,7 @@ $WindowsServerSku = '2022-datacenter-azure-edition'
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
$ProgressActivity = 'Creating Windows Image' $ProgressActivity = 'Creating Windows Image'
$TotalProgress = 17 $TotalProgress = 18
$CurrentProgress = 1 $CurrentProgress = 1
# Assigning this to another variable helps when running the commands in this script manually for # Assigning this to another variable helps when running the commands in this script manually for
@ -87,11 +87,11 @@ Write-Progress `
$VcpkgImageMintingAccount = Get-AzStorageAccount -ResourceGroupName 'vcpkg-image-minting' -Name 'vcpkgimageminting' $VcpkgImageMintingAccount = Get-AzStorageAccount -ResourceGroupName 'vcpkg-image-minting' -Name 'vcpkgimageminting'
# Grant 'Storage Blob Data Reader' (RoleDefinitionId 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1) to the VM $CudnnStorageContext = New-AzStorageContext -StorageAccountName 'vcpkgimageminting' -UseConnectedAccount
New-AzRoleAssignment ` $StartTime = Get-Date
-Scope $VcpkgImageMintingAccount.ID ` $ExpiryTime = $StartTime.AddDays(1)
-RoleDefinitionId '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1' ` $CudnnSas = New-AzStorageContainerSASToken -Name 'assets' -Permission r -StartTime $StartTime -ExpiryTime $ExpiryTime -Context $CudnnStorageContext
-ObjectId $VMCreated.Identity.PrincipalId $CudnnUrl = "https://vcpkgimageminting.blob.core.windows.net/assets/cudnn-windows-x86_64-8.8.1.3_cuda12-archive.zip?$CudnnSas"
#################################################################################################### ####################################################################################################
Write-Progress ` Write-Progress `
@ -127,7 +127,8 @@ Write-Host "deploy-psexec.ps1 output: $($DeployPsExecResult.value.Message)"
function Invoke-ScriptWithPrefix { function Invoke-ScriptWithPrefix {
param( param(
[string]$ScriptName, [string]$ScriptName,
[switch]$AddAdminPw [switch]$AddAdminPw,
[string]$CudnnUrl = $null
) )
Write-Progress ` Write-Progress `
@ -146,6 +147,10 @@ function Invoke-ScriptWithPrefix {
} }
$script = $script.Replace('# REPLACE WITH UTILITY-PREFIX.ps1', $UtilityPrefixContent); $script = $script.Replace('# REPLACE WITH UTILITY-PREFIX.ps1', $UtilityPrefixContent);
if (-not [string]::IsNullOrEmpty($CudnnUrl)) {
$script = $script.Replace('# REPLACE WITH CudnnUrl', "`$CudnnUrl = `"$CudnnUrl`"")
}
Set-Content -Path $tempScriptFilename -Value $script -Encoding utf8NoBOM Set-Content -Path $tempScriptFilename -Value $script -Encoding utf8NoBOM
$parameter = $null $parameter = $null
@ -166,8 +171,6 @@ function Invoke-ScriptWithPrefix {
} }
} }
Invoke-ScriptWithPrefix -ScriptName 'deploy-azcopy.ps1'
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-windows-sdks.ps1' -AddAdminPw Invoke-ScriptWithPrefix -ScriptName 'deploy-windows-sdks.ps1' -AddAdminPw
@ -180,6 +183,12 @@ Invoke-ScriptWithPrefix -ScriptName 'deploy-mpi.ps1' -AddAdminPw
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-cuda.ps1' -AddAdminPw Invoke-ScriptWithPrefix -ScriptName 'deploy-cuda.ps1' -AddAdminPw
####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-cudnn.ps1' -CudnnUrl $CudnnUrl
####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'test-cudnn.ps1'
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-inteloneapi.ps1' -AddAdminPw Invoke-ScriptWithPrefix -ScriptName 'deploy-inteloneapi.ps1' -AddAdminPw
@ -256,11 +265,6 @@ Write-Progress `
-Status 'Deleting unused temporary resources' ` -Status 'Deleting unused temporary resources' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++) -PercentComplete (100 / $TotalProgress * $CurrentProgress++)
Remove-AzRoleAssignment `
-Scope $VcpkgImageMintingAccount.ID `
-RoleDefinitionId '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1' `
-ObjectId $VMCreated.Identity.PrincipalId
Remove-AzVM -Id $VMCreated.ID -Force Remove-AzVM -Id $VMCreated.ID -Force
Remove-AzDisk -ResourceGroupName 'vcpkg-image-minting' -Name $VMCreatedOsDisk -Force Remove-AzDisk -ResourceGroupName 'vcpkg-image-minting' -Name $VMCreatedOsDisk -Force
Remove-AzNetworkInterface -ResourceGroupName 'vcpkg-image-minting' -Name $NicName -Force Remove-AzNetworkInterface -ResourceGroupName 'vcpkg-image-minting' -Name $NicName -Force

View File

@ -1,4 +0,0 @@
$azcopyZipPath = "$PSScriptRoot\azcopyv10.zip"
& curl.exe -L -o $azcopyZipPath 'https://azcopyvnext.azureedge.net/releases/release-10.23.0-20240129/azcopy_windows_amd64_10.23.0.zip'
Expand-Archive -LiteralPath $azcopyZipPath -DestinationPath $env:PROGRAMFILES
Remove-Item -LiteralPath $azcopyZipPath -Force

View File

@ -7,9 +7,6 @@
# If you are running this script outside of our Azure VMs, you will need to download cudnn from NVIDIA and place # If you are running this script outside of our Azure VMs, you will need to download cudnn from NVIDIA and place
# it next to this script. # it next to this script.
$CudnnUrl = 'https://vcpkgimageminting.blob.core.windows.net/assets/cudnn-windows-x86_64-8.8.1.3_cuda12-archive.zip'
$CudnnLocalZipPath = "$PSScriptRoot\cudnn-windows-x86_64-8.8.1.3_cuda12-archive.zip"
$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.1.0/network_installers/cuda_12.1.0_windows_network.exe' $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.1.0/network_installers/cuda_12.1.0_windows_network.exe'
@ -82,25 +79,3 @@ catch {
Write-Error "Failed to install CUDA! $($_.Exception.Message)" Write-Error "Failed to install CUDA! $($_.Exception.Message)"
throw throw
} }
try {
if (Test-Path $CudnnLocalZipPath) {
$cudnnZipPath = $CudnnLocalZipPath
} else {
Write-Host 'Attempting to download cudnn. If this fails, you need to agree to NVidia''s EULA, download cudnn, and place it next to this script.'
$cudnnZipPath = Get-TempFilePath -Extension 'zip'
$env:AZCOPY_AUTO_LOGIN_TYPE = 'MSI'
& "$env:PROGRAMFILES\azcopy_windows_amd64_10.23.0\azcopy.exe" copy $CudnnUrl $cudnnZipPath
if ($LASTEXITCODE -ne 0) {
throw 'Failed to download cudnn!'
}
}
Write-Host "Installing CUDNN to $destination..."
tar.exe -xvf "$cudnnZipPath" --strip 1 --directory "$destination"
Write-Host 'Installation successful!'
}
catch {
Write-Error "Failed to install CUDNN! $($_.Exception.Message)"
throw
}

View File

@ -0,0 +1,28 @@
# REPLACE WITH UTILITY-PREFIX.ps1
# REPLACE WITH CudnnUrl
$destination = "$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v12.1"
$CudnnLocalZipPath = "$PSScriptRoot\cudnn-windows-x86_64-8.8.1.3_cuda12-archive.zip"
try {
if (Test-Path $CudnnLocalZipPath) {
$cudnnZipPath = $CudnnLocalZipPath
} else {
Write-Host 'Attempting to download cudnn. If this fails, you need to agree to NVidia''s EULA, download cudnn, and place it next to this script.'
$cudnnZipPath = Get-TempFilePath -Extension 'zip'
& curl.exe -L -o $cudnnZipPath $CudnnUrl
if ($LASTEXITCODE -ne 0) {
throw 'Failed to download cudnn!'
}
}
Write-Host "Installing CUDNN to $destination..."
tar.exe -xvf "$cudnnZipPath" --strip 1 --directory "$destination"
Write-Host 'Installation successful!'
}
catch {
Write-Error "Failed to install CUDNN! $($_.Exception.Message)"
throw
}

View File

@ -5,5 +5,5 @@
# REPLACE WITH UTILITY-PREFIX.ps1 # REPLACE WITH UTILITY-PREFIX.ps1
$PwshUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.4.1/PowerShell-7.4.1-win-x64.msi' $PwshUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.4.2/PowerShell-7.4.2-win-x64.msi'
InstallMSI -Url $PwshUrl -Name 'PowerShell Core' InstallMSI -Url $PwshUrl -Name 'PowerShell Core'

View File

@ -6,7 +6,7 @@
# REPLACE WITH UTILITY-PREFIX.ps1 # REPLACE WITH UTILITY-PREFIX.ps1
# See https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history # See https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history
$VisualStudioBootstrapperUrl = 'https://download.visualstudio.microsoft.com/download/pr/ec7bd8ef-2c51-4e4f-a83f-9087ffbe8b76/f7fdf51d7c15b65c60f0f358776576f4423417da603ef46a213bd69ad463e9e2/vs_Enterprise.exe' $VisualStudioBootstrapperUrl = 'https://download.visualstudio.microsoft.com/download/pr/a8a3940c-d415-4078-8df8-6af787f56dfa/ff486670bce61323e52b208ecbb71dc05b034c8bf156d0b7bfc0ad67b2611445/vs_Enterprise.exe'
$Workloads = @( $Workloads = @(
'Microsoft.VisualStudio.Workload.NativeDesktop', 'Microsoft.VisualStudio.Workload.NativeDesktop',
'Microsoft.VisualStudio.Workload.Universal', 'Microsoft.VisualStudio.Workload.Universal',

View File

@ -0,0 +1,5 @@
if (Test-Path "$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\cudnn.h") {
Write-Host 'cudnn appears correctly installed'
} else {
Write-Error 'cudnn appears broken!'
}