Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix New-TestResources.ps1 to run pre/post deployment script #1876

Merged
11 commits merged into from
Aug 13, 2021
28 changes: 15 additions & 13 deletions eng/common/TestResources/New-TestResources.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,11 @@ try {
Get-ChildItem -Path $root -Filter "$_" -Recurse | ForEach-Object {
Write-Verbose "Found template '$($_.FullName)'"
if ($_.Extension -eq '.bicep') {
$templateFiles += (BuildBicepFile $_)
$templateFile = @{originalFilePath = $_.FullName; jsonFilePath = (BuildBicepFile $_)}
$templateFiles += $templateFile
} else {
$templateFiles += $_.FullName
$templateFile = @{originalFilePath = $_.FullName; jsonFilePath = $_.FullName}
$templateFiles += $templateFile
}
ckairen marked this conversation as resolved.
Show resolved Hide resolved
}
}
Expand Down Expand Up @@ -457,8 +459,8 @@ try {
# Deploy the templates
foreach ($templateFile in $templateFiles) {
# Deployment fails if we pass in more parameters than are defined.
Write-Verbose "Removing unnecessary parameters from template '$templateFile'"
$templateJson = Get-Content -LiteralPath $templateFile | ConvertFrom-Json
Write-Verbose "Removing unnecessary parameters from template '$($templateFile.jsonFilePath)'"
$templateJson = Get-Content -LiteralPath $templateFile.jsonFilePath | ConvertFrom-Json
$templateParameterNames = $templateJson.parameters.PSObject.Properties.Name

$templateFileParameters = $templateParameters.Clone()
Expand All @@ -469,20 +471,20 @@ try {
}
}

$preDeploymentScript = $templateFile | Split-Path | Join-Path -ChildPath 'test-resources-pre.ps1'
$preDeploymentScript = $templateFile.originalFilePath | Split-Path | Join-Path -ChildPath 'test-resources-pre.ps1'
if (Test-Path $preDeploymentScript) {
Log "Invoking pre-deployment script '$preDeploymentScript'"
&$preDeploymentScript -ResourceGroupName $ResourceGroupName @PSBoundParameters
}

Log "Deploying template '$templateFile' to resource group '$($resourceGroup.ResourceGroupName)'"
Log "Deploying template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'"
weshaggard marked this conversation as resolved.
Show resolved Hide resolved
$deployment = Retry {
$lastDebugPreference = $DebugPreference
try {
if ($CI) {
$DebugPreference = 'Continue'
}
New-AzResourceGroupDeployment -Name $BaseName -ResourceGroupName $resourceGroup.ResourceGroupName -TemplateFile $templateFile -TemplateParameterObject $templateFileParameters -Force:$Force
New-AzResourceGroupDeployment -Name $BaseName -ResourceGroupName $resourceGroup.ResourceGroupName -TemplateFile $templateFile.jsonFilePath -TemplateParameterObject $templateFileParameters -Force:$Force
} catch {
Write-Output @'
#####################################################
Expand All @@ -498,7 +500,7 @@ try {

if ($deployment.ProvisioningState -eq 'Succeeded') {
# New-AzResourceGroupDeployment would've written an error and stopped the pipeline by default anyway.
Write-Verbose "Successfully deployed template '$templateFile' to resource group '$($resourceGroup.ResourceGroupName)'"
Write-Verbose "Successfully deployed template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'"
}

$serviceDirectoryPrefix = $serviceName.ToUpperInvariant() + "_"
Expand Down Expand Up @@ -536,7 +538,7 @@ try {
Write-Host 'File option is supported only on Windows'
}

$outputFile = "$templateFile.env"
$outputFile = "$($templateFile.jsonFilePath).env"

$environmentText = $deploymentOutputs | ConvertTo-Json;
$bytes = ([System.Text.Encoding]::UTF8).GetBytes($environmentText)
Expand Down Expand Up @@ -574,15 +576,15 @@ try {
}
}

$postDeploymentScript = $templateFile | Split-Path | Join-Path -ChildPath 'test-resources-post.ps1'
$postDeploymentScript = $templateFile.originalFilePath | Split-Path | Join-Path -ChildPath 'test-resources-post.ps1'
if (Test-Path $postDeploymentScript) {
Log "Invoking post-deployment script '$postDeploymentScript'"
&$postDeploymentScript -ResourceGroupName $ResourceGroupName -DeploymentOutputs $deploymentOutputs @PSBoundParameters
}

if ($templateFile.EndsWith('.compiled.json')) {
Write-Verbose "Removing compiled bicep file $templateFile"
Remove-Item $templateFile
if ($templateFile.jsonFilePath.EndsWith('.compiled.json')) {
weshaggard marked this conversation as resolved.
Show resolved Hide resolved
Write-Verbose "Removing compiled bicep file $($templateFile.jsonFilePath)"
Remove-Item $templateFile.jsonFilePath
}
}

Expand Down