85 lines
2.9 KiB
PowerShell
85 lines
2.9 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Publiceert MijnBesluit.Web en pakt het resultaat in als één zip-bestand.
|
|
|
|
.DESCRIPTION
|
|
Draai dit op je ontwikkelmachine. Het resultaat is D:\publish\mijnbesluit.zip.
|
|
Dat bestand pak je op de server uit met Uitrollen.ps1.
|
|
|
|
.EXAMPLE
|
|
.\tools\Publiceren.ps1
|
|
.\tools\Publiceren.ps1 -Uitvoer D:\publish -Configuratie Release
|
|
#>
|
|
[CmdletBinding()]
|
|
param(
|
|
# Map waarin de publicatie en het zip-bestand terechtkomen.
|
|
[string] $Uitvoer = 'D:\publish',
|
|
|
|
# Release voor de server, Debug alleen om iets te onderzoeken.
|
|
[ValidateSet('Release', 'Debug')]
|
|
[string] $Configuratie = 'Release',
|
|
|
|
# Sla het inpakken over als je de losse bestanden wilt hebben.
|
|
[switch] $GeenZip
|
|
)
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
# De projectmap is de map boven deze scriptmap.
|
|
$Project = Join-Path (Split-Path $PSScriptRoot -Parent) 'src\MijnBesluit.Web'
|
|
$DoelMap = Join-Path $Uitvoer 'mijnbesluit'
|
|
$ZipPad = Join-Path $Uitvoer 'mijnbesluit.zip'
|
|
|
|
if (-not (Test-Path $Project)) {
|
|
throw "Projectmap niet gevonden: $Project. Draai dit script vanuit de map tools van het project."
|
|
}
|
|
|
|
Write-Host ''
|
|
Write-Host 'MijnBesluit publiceren' -ForegroundColor Cyan
|
|
Write-Host " Project : $Project"
|
|
Write-Host " Configuratie : $Configuratie"
|
|
Write-Host " Uitvoer : $DoelMap"
|
|
Write-Host ''
|
|
|
|
# Schoon beginnen: anders blijven bestanden van een vorige versie achter die nu niet meer
|
|
# bestaan, en die worden dan mee uitgerold.
|
|
if (Test-Path $DoelMap) {
|
|
Write-Host 'Vorige publicatie opruimen...'
|
|
Remove-Item $DoelMap -Recurse -Force
|
|
}
|
|
|
|
Write-Host 'Publiceren...' -ForegroundColor Cyan
|
|
dotnet publish $Project -c $Configuratie -o $DoelMap --nologo
|
|
if ($LASTEXITCODE -ne 0) { throw 'Publiceren is mislukt. Zie de fouten hierboven.' }
|
|
|
|
# Controle: zonder deze twee bestanden start de site niet onder IIS.
|
|
foreach ($nodig in @('MijnBesluit.Web.dll', 'web.config')) {
|
|
if (-not (Test-Path (Join-Path $DoelMap $nodig))) {
|
|
throw "Er ontbreekt iets in de publicatie: $nodig"
|
|
}
|
|
}
|
|
|
|
# appsettings.Development.json hoort niet op een server thuis.
|
|
$ontwikkel = Join-Path $DoelMap 'appsettings.Development.json'
|
|
if (Test-Path $ontwikkel) {
|
|
Remove-Item $ontwikkel -Force
|
|
Write-Host 'appsettings.Development.json verwijderd uit de publicatie.'
|
|
}
|
|
|
|
if (-not $GeenZip) {
|
|
Write-Host 'Inpakken...' -ForegroundColor Cyan
|
|
if (Test-Path $ZipPad) { Remove-Item $ZipPad -Force }
|
|
Compress-Archive -Path (Join-Path $DoelMap '*') -DestinationPath $ZipPad -CompressionLevel Optimal
|
|
}
|
|
|
|
$grootte = if (Test-Path $ZipPad) { '{0:N1} MB' -f ((Get-Item $ZipPad).Length / 1MB) } else { '-' }
|
|
|
|
Write-Host ''
|
|
Write-Host 'Klaar.' -ForegroundColor Green
|
|
Write-Host " Map : $DoelMap"
|
|
if (-not $GeenZip) { Write-Host " Zip : $ZipPad ($grootte)" }
|
|
Write-Host ''
|
|
Write-Host 'Nu op de server, in een PowerShell-venster als administrator:' -ForegroundColor Yellow
|
|
Write-Host " .\Uitrollen.ps1 -Zip '\\tsclient\$($ZipPad.Substring(0,1))\$($ZipPad.Substring(3))'"
|
|
Write-Host ''
|