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