Pipelines/Cleanup.ps1
Param( [Parameter(Mandatory=$false)] [ValidateSet('Local', 'AzureDevOps', 'GithubActions', 'GitLab')] [string] $environment = 'Local', [string] $version ) if ($env:APPFOLDER) { $baseFolder = Join-Path $env:SYSTEM_DEFAULTWORKINGDIRECTORY $env:APPFOLDER } else { $baseFolder = $env:SYSTEM_DEFAULTWORKINGDIRECTORY } if ($env:SETTINGSFILE) { $settingsFile = Join-Path $baseFolder $env:SETTINGSFILE } else { $settingsFile = Join-Path $baseFolder "settings.json" } . (Join-Path $PSScriptRoot "Read-Settings.ps1") -environment $environment -version $version -settingsFile $settingsFile . (Join-Path $PSScriptRoot "Install-BcContainerHelper.ps1") -bcContainerHelperVersion $bcContainerHelperVersion $refreshToken = "$($ENV:BcSaasRefreshToken)" $environmentName = "$($ENV:EnvironmentName)" if ($refreshToken -and $environmentName) { $authContext = New-BcAuthContext -refreshToken $refreshToken if (Get-BcEnvironments -bcAuthContext $authContext | Where-Object { $_.Name -eq $environmentName -and $_.type -eq "Sandbox" }) { Remove-BcEnvironment -bcAuthContext $authContext -environment $environmentName } } if ("$AgentName" -ne "Hosted Agent" -and "$AgentName" -notlike "Azure Pipelines*") { $cleanupMutexName = "Cleanup" $cleanupMutex = New-Object System.Threading.Mutex($false, $cleanupMutexName) try { try { if (!$cleanupMutex.WaitOne(1000)) { Write-Host "Waiting for other process to finish cleanup" $cleanupMutex.WaitOne() | Out-Null Write-Host "Other process completed" } } catch [System.Threading.AbandonedMutexException] { Write-Host "Other process terminated abnormally" } Remove-BcContainer -containerName $containerName Flush-ContainerHelperCache -KeepDays 2 Remove-Module BcContainerHelper $path = Join-Path $ENV:Temp $containerName if (Test-Path $path) { Remove-Item $path -Recurse -Force } } finally { $cleanupMutex.ReleaseMutex() } } |