Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use a new approach for storing temporary files and cleaning
  • Loading branch information
Alexey-Ayupov committed Nov 29, 2024
commit 3ba77af39857a76d226597dca999c24bd198de13
23 changes: 0 additions & 23 deletions images/windows/scripts/build/Configure-System.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -144,27 +144,4 @@ $disableTaskNames | ForEach-Object {
Disable-ScheduledTask @PSItem -ErrorAction Ignore
} | Out-Null

if (Test-IsWin25) {
$directoriesToCompact = @(
'C:\ProgramData\Microsoft\VisualStudio\Packages',
'C:\ProgramData\Package Cache',
'C:\Windows\assembly',
'C:\Windows\WinSxS'
)
Write-Host "Starting Image slimming process"
$start = get-date
$ErrorActionPreviousValue = $ErrorActionPreference
$ErrorActionPreference = 'SilentlyContinue'
Write-Host "Removing 'C:\Windows\Installer' directory"
Remove-Item "$env:windir\Installer" -Recurse -Force | Out-Null
foreach ($directory in $directoriesToCompact) {
Write-Host "Compressing '$directory' directory"
& compact /s:"$directory" /c /a /i /EXE:LZX * | Out-Null
}
$ErrorActionPreference = $ErrorActionPreviousValue
$finish = get-date
$time = "$(($finish - $start).Minutes):$(($finish - $start).Seconds)"
Write-Host "The process took a total of $time (in minutes:seconds)"
}

Write-Host "Configure-System.ps1 - completed"
21 changes: 21 additions & 0 deletions images/windows/scripts/build/Invoke-Cleanup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,24 @@ cmd /c "npm cache clean --force 2>&1" | Out-Null
if ($LASTEXITCODE -ne 0) {
throw "Failed to clean npm cache"
}

if (Test-IsWin25) {
$directoriesToCompact = @(
'C:\Windows\assembly',
'C:\Windows\WinSxS'
)
Write-Host "Starting Image slimming process"
$start = get-date
$ErrorActionPreviousValue = $ErrorActionPreference
$ErrorActionPreference = 'SilentlyContinue'
Write-Host "Removing 'C:\Windows\Installer' directory"
Remove-Item "$env:windir\Installer" -Recurse -Force | Out-Null
foreach ($directory in $directoriesToCompact) {
Write-Host "Compressing '$directory' directory"
& compact /s:"$directory" /c /a /i /EXE:LZX * | Out-Null
}
$ErrorActionPreference = $ErrorActionPreviousValue
$finish = get-date
$time = "$(($finish - $start).Minutes):$(($finish - $start).Seconds)"
Write-Host "The process took a total of $time (in minutes:seconds)"
}
28 changes: 19 additions & 9 deletions images/windows/templates/windows-2025.pkr.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ packer {
locals {
managed_image_name = var.managed_image_name != "" ? var.managed_image_name : "packer-${var.image_os}-${var.image_version}"
}

variable "agent_tools_directory" {
type = string
default = "C:\\hostedtoolcache\\windows"
Expand Down Expand Up @@ -71,6 +72,11 @@ variable "imagedata_file" {
default = "C:\\imagedata.json"
}

variable "temp_dir" {
type = string
default = "D:\\temp"
}

variable "install_password" {
type = string
default = ""
Expand Down Expand Up @@ -189,7 +195,10 @@ build {
sources = ["source.azure-arm.image"]

provisioner "powershell" {
inline = ["New-Item -Path ${var.image_folder} -ItemType Directory -Force"]
inline = [
"New-Item -Path ${var.image_folder} -ItemType Directory -Force",
"New-Item -Path ${var.temp_dir} -ItemType Directory -Force"
]
}

provisioner "file" {
Expand Down Expand Up @@ -241,7 +250,7 @@ build {
}

provisioner "powershell" {
environment_vars = ["IMAGE_VERSION=${var.image_version}", "IMAGE_OS=${var.image_os}", "AGENT_TOOLSDIRECTORY=${var.agent_tools_directory}", "IMAGEDATA_FILE=${var.imagedata_file}", "IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_VERSION=${var.image_version}", "IMAGE_OS=${var.image_os}", "AGENT_TOOLSDIRECTORY=${var.agent_tools_directory}", "IMAGEDATA_FILE=${var.imagedata_file}", "IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
execution_policy = "unrestricted"
scripts = [
"${path.root}/../scripts/build/Configure-WindowsDefender.ps1",
Expand All @@ -267,7 +276,7 @@ build {
}

provisioner "powershell" {
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-Docker.ps1",
"${path.root}/../scripts/build/Install-DockerWinCred.ps1",
Expand All @@ -285,7 +294,7 @@ build {
provisioner "powershell" {
elevated_password = "${var.install_password}"
elevated_user = "${var.install_user}"
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-VisualStudio.ps1",
"${path.root}/../scripts/build/Install-KubernetesTools.ps1"
Expand All @@ -300,7 +309,7 @@ build {

provisioner "powershell" {
pause_before = "2m0s"
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-Wix.ps1",
"${path.root}/../scripts/build/Install-VSExtensions.ps1",
Expand All @@ -315,7 +324,7 @@ build {

provisioner "powershell" {
execution_policy = "remotesigned"
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = ["${path.root}/../scripts/build/Install-ServiceFabricSDK.ps1"]
}

Expand All @@ -324,7 +333,7 @@ build {
}

provisioner "powershell" {
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-ActionsCache.ps1",
"${path.root}/../scripts/build/Install-Ruby.ps1",
Expand Down Expand Up @@ -374,7 +383,7 @@ build {
provisioner "powershell" {
elevated_password = "${var.install_password}"
elevated_user = "${var.install_user}"
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-PostgreSQL.ps1",
"${path.root}/../scripts/build/Install-WindowsUpdates.ps1",
Expand All @@ -394,9 +403,10 @@ build {

provisioner "powershell" {
pause_before = "2m0s"
environment_vars = ["IMAGE_FOLDER=${var.image_folder}"]
environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
scripts = [
"${path.root}/../scripts/build/Install-WindowsUpdatesAfterReboot.ps1",
"${path.root}/../scripts/build/Invoke-Cleanup.ps1",
"${path.root}/../scripts/tests/RunAll-Tests.ps1"
]
}
Expand Down