2018-02-13 18:23:53 +01:00
|
|
|
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
# Licensed under the MIT License.
|
2017-04-22 02:23:08 +02:00
|
|
|
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 .
|