diff --git a/.pipelines/.vsts-vhd-builder-release-windows.yaml b/.pipelines/.vsts-vhd-builder-release-windows.yaml index d72f04596af..0e19b5205c2 100644 --- a/.pipelines/.vsts-vhd-builder-release-windows.yaml +++ b/.pipelines/.vsts-vhd-builder-release-windows.yaml @@ -39,6 +39,10 @@ parameters: displayName: VHD Debug type: boolean default: False +- name: skipExtensionCheck + displayName: Skip Extension Check + type: boolean + default: False # Use variable group "ab-windows-ame-tenant" and link it to the pipeline "AKS Windows VHD Build" # Use variable group "ab-windows-ame-tenant" and link it to the pipeline "AKS Windows VHD Build - PR check-in gate" @@ -54,3 +58,4 @@ stages: build2022containerdgen2: ${{ parameters.build2022containerdgen2 }} build23H2: ${{ parameters.build23H2 }} build23H2gen2: ${{ parameters.build23H2gen2 }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} diff --git a/.pipelines/templates/.build-and-test-windows-vhd-template.yaml b/.pipelines/templates/.build-and-test-windows-vhd-template.yaml index cfba4d44db9..069b1004bf2 100644 --- a/.pipelines/templates/.build-and-test-windows-vhd-template.yaml +++ b/.pipelines/templates/.build-and-test-windows-vhd-template.yaml @@ -30,6 +30,9 @@ parameters: - name: hyperVGeneration type: string displayName: V1 or V2. + - name: skipExtensionCheck + displayName: Skip Extension Check + type: boolean default: False - name: windowsBaseImageUrl displayName: Windows Base Image URL Override @@ -58,6 +61,7 @@ stages: echo '##vso[task.setvariable variable=HYPERV_GENERATION]${{ parameters.hyperVGeneration }}' echo '##vso[task.setvariable variable=AZURE_VM_SIZE]${{ parameters.buildVmSize }}' echo '##vso[task.setvariable variable=WINDOWS_SKU]${{ parameters.windowsSku }}' + echo '##vso[task.setvariable variable=SKIP_EXTENSION_CHECK]${{ parameters.skipExtensionCheck }}' echo '##vso[task.setvariable variable=WINDOWS_BASE_IMAGE_URL]${{ parameters.windowsBaseImageUrl }}' echo '##vso[task.setvariable variable=WINDOWS_NANO_IMAGE_URL]${{ parameters.windowsNanoImageUrl }}' echo '##vso[task.setvariable variable=WINDOWS_CORE_IMAGE_URL]${{ parameters.windowsCoreImageUrl }}' diff --git a/.pipelines/templates/.build-and-test-windows-vhds-template.yaml b/.pipelines/templates/.build-and-test-windows-vhds-template.yaml index 93f07a1752d..305712bc23c 100644 --- a/.pipelines/templates/.build-and-test-windows-vhds-template.yaml +++ b/.pipelines/templates/.build-and-test-windows-vhds-template.yaml @@ -22,6 +22,10 @@ parameters: displayName: VHD Debug type: boolean default: False + - name: skipExtensionCheck + displayName: Skip Extension Check + type: boolean + default: False stages: - template: ./.build-and-test-windows-vhd-template.yaml @@ -34,6 +38,7 @@ stages: build: ${{ parameters.build2019containerd }} vhddebug: ${{ parameters.vhddebug }} dryrun: ${{ parameters.dryrun }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} windowsBaseImageUrl: $(WINDOWS_2019_BASE_IMAGE_URL) windowsNanoImageUrl: $(WINDOWS_2019_NANO_IMAGE_URL) windowsCoreImageUrl: $(WINDOWS_2019_CORE_IMAGE_URL) @@ -48,6 +53,7 @@ stages: build: ${{ parameters.build2022containerd }} vhddebug: ${{ parameters.vhddebug }} dryrun: ${{ parameters.dryrun }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} windowsBaseImageUrl: $(WINDOWS_2022_BASE_IMAGE_URL) windowsNanoImageUrl: $(WINDOWS_2022_NANO_IMAGE_URL) windowsCoreImageUrl: $(WINDOWS_2022_CORE_IMAGE_URL) @@ -62,6 +68,7 @@ stages: build: ${{ parameters.build2022containerdgen2 }} vhddebug: ${{ parameters.vhddebug }} dryrun: ${{ parameters.dryrun }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} windowsBaseImageUrl: $(WINDOWS_23H2_GEN2_BASE_IMAGE_URL) windowsNanoImageUrl: $(WINDOWS_2022_NANO_IMAGE_URL) windowsCoreImageUrl: $(WINDOWS_2022_CORE_IMAGE_URL) @@ -76,6 +83,7 @@ stages: build: ${{ parameters.build23H2 }} vhddebug: ${{ parameters.vhddebug }} dryrun: ${{ parameters.dryrun }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} windowsBaseImageUrl: $(WINDOWS_23H2_BASE_IMAGE_URL) windowsNanoImageUrl: $(WINDOWS_2022_NANO_IMAGE_URL) windowsCoreImageUrl: $(WINDOWS_2022_CORE_IMAGE_URL) @@ -90,6 +98,7 @@ stages: build: ${{ parameters.build23H2gen2 }} vhddebug: ${{ parameters.vhddebug }} dryrun: ${{ parameters.dryrun }} + skipExtensionCheck: ${{ parameters.skipExtensionCheck }} windowsBaseImageUrl: $(WINDOWS_23H2_GEN2_BASE_IMAGE_URL) windowsNanoImageUrl: $(WINDOWS_2022_NANO_IMAGE_URL) windowsCoreImageUrl: $(WINDOWS_2022_CORE_IMAGE_URL) diff --git a/.pipelines/templates/.builder-release-template-windows.yaml b/.pipelines/templates/.builder-release-template-windows.yaml index 2ff4150d408..31f43f53521 100644 --- a/.pipelines/templates/.builder-release-template-windows.yaml +++ b/.pipelines/templates/.builder-release-template-windows.yaml @@ -88,6 +88,7 @@ steps: -e BUILD_NUMBER=$(Build.BuildNumber) \ -e WINDOWS_SKU=$(WINDOWS_SKU) \ -e OS_TYPE="Windows" \ + -e SKIP_EXTENSION_CHECK=$(SKIP_EXTENSION_CHECK) \ -e MODE=$(MODE) \ -e SIG_GALLERY_NAME=${SIG_GALLERY_NAME} \ -e SIG_IMAGE_NAME=${SIG_IMAGE_NAME} \ @@ -121,6 +122,7 @@ steps: -e MANAGED_SIG_ID=${MANAGED_SIG_ID} \ -e AZURE_LOCATION=${AZURE_BUILD_LOCATION} \ -e WINDOWS_SKU=$(WINDOWS_SKU) \ + -e SKIP_EXTENSION_CHECK=$(SKIP_EXTENSION_CHECK) \ -e SKIPVALIDATEREOFFERUPDATE=${SKIPVALIDATEREOFFERUPDATE} \ -e OS_TYPE="Windows" \ -e MODE=$(MODE) \ @@ -177,6 +179,7 @@ steps: -e LOCATION="${AZURE_BUILD_LOCATION}" \ -e OS_TYPE="Windows" \ -e CLASSIC_BLOB="$(STORAGE_ACCT_BLOB_URL)" \ + -e SKIP_EXTENSION_CHECK=$(SKIP_EXTENSION_CHECK) \ -e SIG_IMAGE_NAME=${SIG_IMAGE_NAME} \ -e SIG_GALLERY_NAME=${SIG_GALLERY_NAME} \ -e SIG_IMAGE_VERSION=${SIG_IMAGE_VERSION} \ @@ -214,6 +217,7 @@ steps: -e IMAGE_NAME=${IMAGE_NAME} \ -e VNET_RESOURCE_GROUP_NAME=${VNET_RESOURCE_GROUP_NAME} \ -e TEST_VM_RESOURCE_GROUP_NAME=${TEST_VM_RESOURCE_GROUP_NAME} \ + -e SKIP_EXTENSION_CHECK=$(SKIP_EXTENSION_CHECK) \ -e WINDOWS_SKU=$(WINDOWS_SKU) \ -e IMPORTED_IMAGE_NAME=${IMPORTED_IMAGE_NAME} \ -e SIG_GALLERY_NAME=${SIG_GALLERY_NAME} \ @@ -244,6 +248,7 @@ steps: -e STORAGE_ACCT_BLOB_URL=${STORAGE_ACCT_BLOB_URL} \ -e VHD_NAME=${VHD_NAME} \ -e OS_NAME="Windows" \ + -e SKIP_EXTENSION_CHECK=${SKIP_EXTENSION_CHECK} \ -e SKU_NAME=${SKU_NAME} \ -e OFFER_NAME="Windows" \ -e MODE=$(MODE) \ diff --git a/vhdbuilder/packer/init-variables.sh b/vhdbuilder/packer/init-variables.sh index ea1a4e7bd0e..2a19021163d 100755 --- a/vhdbuilder/packer/init-variables.sh +++ b/vhdbuilder/packer/init-variables.sh @@ -500,6 +500,7 @@ cat < vhdbuilder/packer/settings.json "vm_size": "${AZURE_VM_SIZE}", "create_time": "${CREATE_TIME}", "img_version": "${IMG_VERSION}", + "SKIP_EXTENSION_CHECK": "${SKIP_EXTENSION_CHECK}", "vhd_build_timestamp": "${VHD_BUILD_TIMESTAMP}", "windows_image_publisher": "${WINDOWS_IMAGE_PUBLISHER}", "windows_image_offer": "${WINDOWS_IMAGE_OFFER}", diff --git a/vhdbuilder/packer/windows/configure-windows-vhd.ps1 b/vhdbuilder/packer/windows/configure-windows-vhd.ps1 index b6172218eda..3ab87ad779d 100644 --- a/vhdbuilder/packer/windows/configure-windows-vhd.ps1 +++ b/vhdbuilder/packer/windows/configure-windows-vhd.ps1 @@ -798,13 +798,23 @@ function Log-ReofferUpdate function Test-AzureExtensions { + if ($env:SKIP_EXTENSION_CHECK -eq "true") + { + Write-Log "Skipping extension check because SKIP_EXTENSION_CHECK is set to true" + return + } + # Expect the Windows VHD without any other extensions if (Test-Path "C:\Packages\Plugins") { $actualExtensions = (Get-ChildItem "C:\Packages\Plugins").Name if ($actualExtensions.Length -gt 0) { - Write-Log "Azure extensions are not expected. Details: $( $actualExtensions | Out-String )" + Write-Log "Azure extensions are not expected and skip extension checks was $env:SKIP_EXTENSION_CHECK. Details:" + foreach ($extension in $actualExtensions) + { + Write-Log "* $extension" + } exit 1 } } diff --git a/vhdbuilder/packer/windows/windows-vhd-builder-sig.json b/vhdbuilder/packer/windows/windows-vhd-builder-sig.json index 77ec2f4f618..5905872c959 100644 --- a/vhdbuilder/packer/windows/windows-vhd-builder-sig.json +++ b/vhdbuilder/packer/windows/windows-vhd-builder-sig.json @@ -125,7 +125,8 @@ "elevated_password": "{{.WinRMPassword}}", "environment_vars": [ "ProvisioningPhase=3", - "WindowsSKU={{user `windows_sku`}}" + "WindowsSKU={{user `windows_sku`}}", + "SKIP_EXTENSION_CHECK={{ user `SKIP_EXTENSION_CHECK` }}" ], "type": "powershell", "scripts": [