PowerShell/test/docker/networktest/New-DockerTestBuild.ps1

80 lines
2.2 KiB
PowerShell

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
param ( [switch]$Force, [switch]$UseExistingMsi )
$script:Constants = @{
AccountName = 'PowerShell'
ProjectName = 'powershell-f975h'
TestImageName = "remotetestimage"
MsiName = "PSCore.msi"
Token = "" # in this particular use we don't need a token
}
############
### MAIN ###
############
#### DOCKER OPS #####
# is docker installed?
$dockerExe = get-command docker -ea silentlycontinue
if ( $dockerExe.name -ne "docker.exe" ) {
throw "Cannot find docker, is it installed?"
}
# Check to see if we already have an image, and if so
# delete it if -Force was used, otherwise throw and exit
$TestImage = docker images $Constants.TestImageName --format '{{.Repository}}'
if ( $TestImage -eq $Constants.TestImageName)
{
if ( $Force )
{
docker rmi $Constants.TestImageName
}
else
{
throw ("{0} already exists, use '-Force' to remove" -f $Constants.TestImageName)
}
}
# check again - there could be some permission problems
$TestImage = docker images $Constants.TestImageName --format '{{.Repository}}'
if ( $TestImage -eq $Constants.TestImageName)
{
throw ("'{0}' still exists, giving up" -f $Constants.TestImageName)
}
#### MSI CHECKS ####
# check to see if the MSI is present
$MsiExists = test-path $Constants.MsiName
$msg = "{0} exists, use -Force to remove or -UseExistingMsi to use" -f $Constants.MsiName
if ( $MsiExists -and ! ($force -or $useExistingMsi))
{
throw $msg
}
# remove the msi
if ( $MsiExists -and $Force -and ! $UseExistingMsi )
{
Remove-Item -force $Constants.MsiName
$MsiExists = $false
}
# a couple of checks before downloading or using the existing one
# if the msi exists and -UseExistingMsi is present, we'll use the
# one we found
if ( ! $MsiExists -and $UseExistingMsi )
{
throw ("{0} does not exist" -f $Constants.MsiName)
}
elseif ( $MsiExists -and ! $UseExistingMsi )
{
throw $msg
}
# last check before bulding the image
if ( ! (test-path $Constants.MsiName) )
{
throw ("{0} does not exist, giving up" -f $Constants.MsiName)
}
# collect the builds and select the last one
Docker build --tag $Constants.TestImageName .