Fix Windows deploy remote script line endings
This commit is contained in:
@@ -24,6 +24,14 @@ function Invoke-NativeCommand {
|
||||
}
|
||||
}
|
||||
|
||||
function ConvertTo-LinuxLineEnding {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)][string]$Value
|
||||
)
|
||||
|
||||
return $Value.Replace("`r`n", "`n").Replace("`r", "`n")
|
||||
}
|
||||
|
||||
function Get-RemoteScript {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)][string]$RemoteReleaseDir,
|
||||
@@ -76,7 +84,7 @@ if ! docker run -d \
|
||||
fi
|
||||
'@
|
||||
|
||||
return $script.
|
||||
$script = $script.
|
||||
Replace("__REMOTE_RELEASE_DIR__", $RemoteReleaseDir).
|
||||
Replace("__REMOTE_CURRENT_LINK__", $RemoteCurrentLink).
|
||||
Replace("__CONTAINER_NAME__", $ContainerName).
|
||||
@@ -85,6 +93,8 @@ fi
|
||||
Replace("__REMOTE_DATA_DIR__", $RemoteDataDir).
|
||||
Replace("__CONTAINER_PORT__", $ContainerPort).
|
||||
Replace("__HOST_PORT__", $HostPort)
|
||||
|
||||
return ConvertTo-LinuxLineEnding -Value $script
|
||||
}
|
||||
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
@@ -119,7 +129,7 @@ try {
|
||||
dotnet publish $projectPath -c Release -o $localPublishDir
|
||||
}
|
||||
|
||||
@'
|
||||
$dockerfile = @'
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0
|
||||
WORKDIR /app
|
||||
ENV ASPNETCORE_URLS=http://+:8080
|
||||
@@ -128,21 +138,10 @@ EXPOSE 8080
|
||||
COPY publish/ ./
|
||||
RUN mkdir -p /app/data
|
||||
ENTRYPOINT ["dotnet", "RpgRoller.dll"]
|
||||
'@ | Set-Content -Path (Join-Path $localStageDir "Dockerfile") -NoNewline
|
||||
'@
|
||||
|
||||
Invoke-NativeCommand -Name "2) Preparing remote release directory..." -Action {
|
||||
ssh $remoteHost "mkdir -p '$remoteReleasesDir' '$remoteDataDir' && test ! -e '$remoteReleaseDir' && mkdir -p '$remoteReleaseDir'"
|
||||
}
|
||||
|
||||
Invoke-NativeCommand -Name "3) Uploading release payload..." -Action {
|
||||
Push-Location $localStageDir
|
||||
try {
|
||||
scp -r "Dockerfile" "publish" "${remoteHost}:$remoteReleaseDir/"
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
ConvertTo-LinuxLineEnding -Value $dockerfile |
|
||||
Set-Content -Path (Join-Path $localStageDir "Dockerfile") -NoNewline
|
||||
|
||||
$remoteScript = Get-RemoteScript `
|
||||
-RemoteReleaseDir $remoteReleaseDir `
|
||||
@@ -154,8 +153,25 @@ ENTRYPOINT ["dotnet", "RpgRoller.dll"]
|
||||
-ContainerPort $containerPort `
|
||||
-HostPort $hostPort
|
||||
|
||||
ConvertTo-LinuxLineEnding -Value $remoteScript |
|
||||
Set-Content -Path (Join-Path $localStageDir "deploy-remote.sh") -NoNewline
|
||||
|
||||
Invoke-NativeCommand -Name "2) Preparing remote release directory..." -Action {
|
||||
ssh $remoteHost "mkdir -p '$remoteReleasesDir' '$remoteDataDir' && test ! -e '$remoteReleaseDir' && mkdir -p '$remoteReleaseDir'"
|
||||
}
|
||||
|
||||
Invoke-NativeCommand -Name "3) Uploading release payload..." -Action {
|
||||
Push-Location $localStageDir
|
||||
try {
|
||||
scp -r "Dockerfile" "deploy-remote.sh" "publish" "${remoteHost}:$remoteReleaseDir/"
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
Invoke-NativeCommand -Name "4) Building image and restarting container on remote host..." -Action {
|
||||
$remoteScript | ssh $remoteHost "bash -se"
|
||||
ssh $remoteHost "bash '$remoteReleaseDir/deploy-remote.sh'"
|
||||
}
|
||||
|
||||
Write-Host "5) Deployment complete."
|
||||
|
||||
Reference in New Issue
Block a user