mirror of
https://github.com/actions/runner-images.git
synced 2025-12-10 11:07:02 +00:00
Co-authored-by: Shamil Mubarakshin <127750046+shamil-mubarakshin@users.noreply.github.com>
78 lines
3.2 KiB
PowerShell
78 lines
3.2 KiB
PowerShell
param(
|
|
[String] [Parameter (Mandatory=$true)] $TemplatePath,
|
|
[String] [Parameter (Mandatory=$true)] $BuildTemplateName,
|
|
[String] [Parameter (Mandatory=$true)] $ClientId,
|
|
[String] [Parameter (Mandatory=$false)] $ClientSecret,
|
|
[String] [Parameter (Mandatory=$true)] $Location,
|
|
[String] [Parameter (Mandatory=$true)] $ImageName,
|
|
[String] [Parameter (Mandatory=$true)] $ImageResourceGroupName,
|
|
[String] [Parameter (Mandatory=$true)] $TempResourceGroupName,
|
|
[String] [Parameter (Mandatory=$true)] $SubscriptionId,
|
|
[String] [Parameter (Mandatory=$true)] $TenantId,
|
|
[String] [Parameter (Mandatory=$true)] $ImageOS, # e.g. "ubuntu22", "ubuntu22" or "win19", "win22", "win25"
|
|
[String] [Parameter (Mandatory=$false)] $UseAzureCliAuth = "false",
|
|
[String] [Parameter (Mandatory=$false)] $PluginVersion = "2.3.3",
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkName,
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkRG,
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkSubnet,
|
|
[String] [Parameter (Mandatory=$false)] $AllowedInboundIpAddresses = "[]",
|
|
[hashtable] [Parameter (Mandatory=$false)] $Tags = @{}
|
|
)
|
|
|
|
if (-not (Test-Path $TemplatePath))
|
|
{
|
|
Write-Error "'-TemplatePath' parameter is not valid. You have to specify correct Template Path"
|
|
exit 1
|
|
}
|
|
|
|
$buildName = $($BuildTemplateName).Split(".")[1]
|
|
$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper()
|
|
|
|
$SensitiveData = @(
|
|
'OSType',
|
|
'StorageAccountLocation',
|
|
'OSDiskUri',
|
|
'OSDiskUriReadOnlySas',
|
|
'TemplateUri',
|
|
'TemplateUriReadOnlySas',
|
|
': ->'
|
|
)
|
|
|
|
$azure_tags = $Tags | ConvertTo-Json -Compress
|
|
|
|
Write-Host "Show Packer Version"
|
|
packer --version
|
|
|
|
Write-Host "Download packer plugins"
|
|
packer plugins install github.com/hashicorp/azure $pluginVersion
|
|
|
|
Write-Host "Validate packer template"
|
|
packer validate -syntax-only -only "$buildName*" $TemplatePath
|
|
|
|
Write-Host "Build $buildName VM"
|
|
packer build -only "$buildName*" `
|
|
-var "client_id=$ClientId" `
|
|
-var "client_secret=$ClientSecret" `
|
|
-var "install_password=$InstallPassword" `
|
|
-var "location=$Location" `
|
|
-var "image_os=$ImageOS" `
|
|
-var "managed_image_name=$ImageName" `
|
|
-var "managed_image_resource_group_name=$ImageResourceGroupName" `
|
|
-var "subscription_id=$SubscriptionId" `
|
|
-var "temp_resource_group_name=$TempResourceGroupName" `
|
|
-var "tenant_id=$TenantId" `
|
|
-var "virtual_network_name=$VirtualNetworkName" `
|
|
-var "virtual_network_resource_group_name=$VirtualNetworkRG" `
|
|
-var "virtual_network_subnet_name=$VirtualNetworkSubnet" `
|
|
-var "allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
|
-var "use_azure_cli_auth=$UseAzureCliAuth" `
|
|
-var "azure_tags=$azure_tags" `
|
|
-color=false `
|
|
$TemplatePath `
|
|
| Where-Object {
|
|
#Filter sensitive data from Packer logs
|
|
$currentString = $_
|
|
$sensitiveString = $SensitiveData | Where-Object { $currentString -match $_ }
|
|
$sensitiveString -eq $null
|
|
}
|