Remove PowerShell deploy script and mark deploy.sh as executable.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,103 +0,0 @@
|
||||
# Deploy Idle Fantasy Save Viewer to production.
|
||||
# Usage (from repo root): .\scripts\deploy.ps1
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Write-Step([string]$Message) {
|
||||
Write-Host "==> $Message"
|
||||
}
|
||||
|
||||
function Fail([string]$Message) {
|
||||
Write-Error $Message
|
||||
exit 1
|
||||
}
|
||||
|
||||
function Invoke-RemoteDeploy {
|
||||
param(
|
||||
[string[]]$SshOptions,
|
||||
[string]$TargetHost,
|
||||
[string]$ScriptPath,
|
||||
[string]$RemoteDir,
|
||||
[string]$Branch,
|
||||
[string]$ExpectedSha,
|
||||
[string]$HealthUrl,
|
||||
[int]$HealthRetries,
|
||||
[int]$HealthInterval
|
||||
)
|
||||
|
||||
if (-not (Get-Command scp -ErrorAction SilentlyContinue)) {
|
||||
Fail "scp not found. Install OpenSSH client or use Git Bash with scripts/deploy.sh"
|
||||
}
|
||||
|
||||
$remoteScript = "/tmp/if-viewer-deploy-$PID.sh"
|
||||
$quoted = @(
|
||||
$RemoteDir,
|
||||
$Branch,
|
||||
$ExpectedSha,
|
||||
$HealthUrl,
|
||||
"$HealthRetries",
|
||||
"$HealthInterval"
|
||||
) | ForEach-Object { "'" + ($_ -replace "'", "'\\''") + "'" }
|
||||
|
||||
$remoteArgs = $quoted -join " "
|
||||
$remoteRun = "bash $remoteScript $remoteArgs; rc=`$?; rm -f $remoteScript; exit `$rc"
|
||||
|
||||
& scp @SshOptions $ScriptPath "${TargetHost}:${remoteScript}"
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
& ssh @SshOptions $TargetHost $remoteRun
|
||||
return $LASTEXITCODE
|
||||
}
|
||||
|
||||
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$RemoteScriptPath = Join-Path $ScriptDir "deploy-remote.sh"
|
||||
|
||||
$RepoRoot = git rev-parse --show-toplevel 2>$null
|
||||
if (-not $RepoRoot) { Fail "Not inside a git repository." }
|
||||
Set-Location $RepoRoot
|
||||
|
||||
# On Windows use native OpenSSH (same client as interactive "ssh" in PowerShell).
|
||||
# Git Bash ships its own ssh/known_hosts and breaks host key verification.
|
||||
$OnWindows = ($env:OS -match "Windows") -or ($PSVersionTable.PSPlatform -eq "Win32NT")
|
||||
if (-not $OnWindows -and (Get-Command bash -ErrorAction SilentlyContinue)) {
|
||||
& bash "./scripts/deploy.sh"
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
$DeployHost = if ($env:DEPLOY_HOST) { $env:DEPLOY_HOST } else { "root@10.0.0.5" }
|
||||
$DeployDir = if ($env:DEPLOY_DIR) { $env:DEPLOY_DIR } else { "/opt/apps/Idle-Fantasy-Save-Viewer" }
|
||||
$HealthUrl = if ($env:DEPLOY_HEALTH_URL) { $env:DEPLOY_HEALTH_URL } else { "http://127.0.0.1:5000/" }
|
||||
$HealthRetries = if ($env:DEPLOY_HEALTH_RETRIES) { [int]$env:DEPLOY_HEALTH_RETRIES } else { 20 }
|
||||
$HealthInterval = if ($env:DEPLOY_HEALTH_INTERVAL) { [int]$env:DEPLOY_HEALTH_INTERVAL } else { 2 }
|
||||
$SshOpts = @("-o", "BatchMode=yes", "-o", "StrictHostKeyChecking=accept-new")
|
||||
|
||||
$Branch = git rev-parse --abbrev-ref HEAD
|
||||
if ($Branch -eq "HEAD") { Fail "Detached HEAD - checkout a branch before deploying." }
|
||||
|
||||
$Status = git status --porcelain
|
||||
if ($Status) { Fail "Working tree is not clean. Commit or stash changes before deploying." }
|
||||
|
||||
$Upstream = git rev-parse --abbrev-ref --symbolic-full-name "@{u}" 2>$null
|
||||
if (-not $Upstream) { Fail "Branch '$Branch' has no upstream. Run: git push -u origin $Branch" }
|
||||
|
||||
$LocalSha = git rev-parse HEAD
|
||||
Write-Step "Local branch: $Branch ($LocalSha)"
|
||||
Write-Step "Pushing $Branch to origin..."
|
||||
git push origin $Branch
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
Write-Step "Deploying to ${DeployHost}:${DeployDir}"
|
||||
|
||||
$exitCode = Invoke-RemoteDeploy `
|
||||
-SshOptions $SshOpts `
|
||||
-TargetHost $DeployHost `
|
||||
-ScriptPath $RemoteScriptPath `
|
||||
-RemoteDir $DeployDir `
|
||||
-Branch $Branch `
|
||||
-ExpectedSha $LocalSha `
|
||||
-HealthUrl $HealthUrl `
|
||||
-HealthRetries $HealthRetries `
|
||||
-HealthInterval $HealthInterval
|
||||
if ($exitCode -ne 0) { exit $exitCode }
|
||||
|
||||
Write-Step "Deployment finished successfully."
|
||||
Regular → Executable
Reference in New Issue
Block a user