nav-docker/dp-w1/build.ps1

77 строки
2.5 KiB
PowerShell

Param( [PSCustomObject] $json )
# Json format:
#
# $json = '{
# "platform": "<platform ex. ltsc2019>",
# "baseimage": "<baseimage ex. microsoft/dynamics-nav:generic>",
# "navdvdbloburl": "<url>",
# "vsixbloburl": "<url>",
# "country": "<country>",
# "navversion": "<version ex. 2016>",
# "legal": "<legal url>",
# "cu": "<cu ex. cu1>",
# "version": "<version ex. 9.0.43402.0>",
# "tags": "<tags ex. microsoft/dynamics-nav:9.0.43402.0-ltsc2019,microsoft/dynamics-nav:2016-cu1-ltsc2019,microsoft/dynamics-nav:2016-cu1-w1-ltsc2019>",
# "storageAccountName": "account name if artifacts should be created"
# "storageAccountKey": "account key if artifacts should be created"
# "insider": $true/$false
# "master": $true/$false
# "latest": $true/$false
# }' | ConvertFrom-Json
cd $PSScriptRoot
$json.platform | ForEach-Object {
$osSuffix = $_
$thisbaseimage = $json.baseimage
if (!($thisbaseimage.EndsWith($osSuffix))) {
$thisbaseimage += "-$osSuffix"
}
$image = "dp:$($json.version)-base-$osSuffix"
docker pull $thisbaseimage 2>NULL
docker images --format "{{.Repository}}:{{.Tag}}" | % {
if ($_ -eq $image)
{
docker rmi $image -f
}
}
Write-Host "Build $image from $thisbaseimage"
$created = [DateTime]::Now.ToUniversalTime().ToString("yyyyMMddHHmm")
if ($osSuffix -eq "ltsc2016") {
$isolation = "hyperv"
}
else {
$isolation = "hyperv"
}
docker build --build-arg baseimage="$thisbaseimage" `
--build-arg navdvdurl="$($json.navdvdbloburl)" `
--build-arg vsixurl="$($json.vsixbloburl)" `
--build-arg legal="$($json.legal)" `
--build-arg created="$created" `
--build-arg cu="$($json.cu)" `
--build-arg country="$($json.country)" `
--build-arg version="$($json.version)" `
--build-arg platform="$($json.platformversion)" `
--isolation=$isolation `
--memory 10G `
--tag $image `
$PSScriptRoot
if ($LASTEXITCODE) {
throw "Error building image"
} else {
if ($json.tags) {
$json.tags.Split(',') | ForEach-Object {
docker tag $image $_
docker push $_
}
}
}
}