Simplify Vault start on Windows
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	
This commit is contained in:
		@@ -73,6 +73,11 @@ jobs:
 | 
			
		||||
          VAULT_SKIP_VERIFY: "true"
 | 
			
		||||
        run: |
 | 
			
		||||
          .\script\vault-setup.ps1
 | 
			
		||||
        artifacts:
 | 
			
		||||
          paths:
 | 
			
		||||
            - vault.pid
 | 
			
		||||
            - vault.out.log
 | 
			
		||||
            - vault.err.log
 | 
			
		||||
 | 
			
		||||
      - name: Vet
 | 
			
		||||
        run: go vet -v ./...
 | 
			
		||||
 
 | 
			
		||||
@@ -1,92 +1,31 @@
 | 
			
		||||
# Create directories
 | 
			
		||||
New-Item -ItemType Directory -Path ".\vault-data" -Force -ErrorAction SilentlyContinue
 | 
			
		||||
New-Item -ItemType Directory -Path ".\vault-logs" -Force -ErrorAction SilentlyContinue
 | 
			
		||||
 | 
			
		||||
# Start Vault server
 | 
			
		||||
$vaultArgs = @(
 | 
			
		||||
    "server",
 | 
			
		||||
    "-dev",
 | 
			
		||||
    "-dev-tls",
 | 
			
		||||
    "-dev-root-token-id=root",
 | 
			
		||||
    "-dev-listen-address=127.0.0.1:8200",
 | 
			
		||||
    "-log-level=debug",
 | 
			
		||||
    "-log-file=.\vault-logs\vault.log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
Write-Output "✅ Starting Vault server..."
 | 
			
		||||
$vaultJob = Start-Job -Name "VaultServer" -ScriptBlock {
 | 
			
		||||
    param($Args)
 | 
			
		||||
    & ".\vault.exe" $Args
 | 
			
		||||
} -ArgumentList $vaultArgs
 | 
			
		||||
Write-Host "Starting Vault dev server..."
 | 
			
		||||
$vaultProc = Start-Process vault `
 | 
			
		||||
    -ArgumentList "server -dev -dev-tls" `
 | 
			
		||||
    -RedirectStandardOutput "vault.out.log" `
 | 
			
		||||
    -RedirectStandardError "vault.err.log" `
 | 
			
		||||
    -WindowStyle Hidden `
 | 
			
		||||
    -PassThru
 | 
			
		||||
$vaultPid = $vaultProc.Id
 | 
			
		||||
Write-Host "Vault started with PID $vaultPid"
 | 
			
		||||
Set-Content -Path vault.pid -Value $vaultPid
 | 
			
		||||
 | 
			
		||||
# Wait a moment for the job to start
 | 
			
		||||
Start-Sleep -Seconds 2
 | 
			
		||||
 | 
			
		||||
# Get the actual process ID from the job
 | 
			
		||||
$vaultProcess = Get-Process -Name "vault" -ErrorAction SilentlyContinue | Select-Object -First 1
 | 
			
		||||
if ($vaultProcess) {
 | 
			
		||||
    $vaultProcess.Id | Out-File -FilePath "vault-pid.txt"
 | 
			
		||||
    Write-Output "✅ Vault process started with PID: $($vaultProcess.Id)"
 | 
			
		||||
} else {
 | 
			
		||||
    Write-Output "❌ Could not find Vault process"
 | 
			
		||||
    
 | 
			
		||||
    # Show logs
 | 
			
		||||
    Write-Output "=== LOG (last 20 lines) ==="
 | 
			
		||||
    Get-Content ".\vault-logs\vault.log" -ErrorAction SilentlyContinue | Select-Object -Last 20
 | 
			
		||||
    
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Wait for Vault to become ready using port check
 | 
			
		||||
$timeout = 30
 | 
			
		||||
$counter = 0
 | 
			
		||||
$isReady = $false
 | 
			
		||||
$vaultPort = 8200
 | 
			
		||||
 | 
			
		||||
Write-Output "🕐 Waiting for Vault to start on port $vaultPort..."
 | 
			
		||||
while ($counter -lt $timeout) {
 | 
			
		||||
    # Check if process is still running
 | 
			
		||||
    if (-not (Get-Process -Id $vaultPid -ErrorAction SilentlyContinue)) {
 | 
			
		||||
        Write-Output "❌ Vault process died unexpectedly!"
 | 
			
		||||
        break
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    # Check if port is listening
 | 
			
		||||
# Wait until Vault is ready
 | 
			
		||||
$maxRetries = 15
 | 
			
		||||
$ok = $false
 | 
			
		||||
for ($i=0; $i -lt $maxRetries; $i++) {
 | 
			
		||||
    try {
 | 
			
		||||
        $tcpClient = New-Object System.Net.Sockets.TcpClient
 | 
			
		||||
        $asyncResult = $tcpClient.BeginConnect("127.0.0.1", $vaultPort, $null, $null)
 | 
			
		||||
        $wait = $asyncResult.AsyncWaitHandle.WaitOne(1000, $false)
 | 
			
		||||
        if ($wait) {
 | 
			
		||||
            $tcpClient.EndConnect($asyncResult)
 | 
			
		||||
            $tcpClient.Close()
 | 
			
		||||
            $isReady = $true
 | 
			
		||||
            Write-Output "✅ Vault server is listening on port $vaultPort!"
 | 
			
		||||
            break
 | 
			
		||||
        }
 | 
			
		||||
        $tcpClient.Close()
 | 
			
		||||
        Invoke-RestMethod -UseBasicParsing -SkipCertificateCheck https://127.0.0.1:8200/v1/sys/health | Out-Null
 | 
			
		||||
        $ok = $true
 | 
			
		||||
        break
 | 
			
		||||
    } catch {
 | 
			
		||||
        # Port not ready yet
 | 
			
		||||
        Start-Sleep -Seconds 2
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    Write-Output "🕐 Waiting for Vault to start... ($counter/$timeout)"
 | 
			
		||||
    Start-Sleep -Seconds 1
 | 
			
		||||
    $counter++
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (-not $isReady) {
 | 
			
		||||
    Write-Output "❌ Vault server failed to start within $timeout seconds"
 | 
			
		||||
    
 | 
			
		||||
    # Show process status
 | 
			
		||||
    Write-Output "=== PROCESS STATUS ==="
 | 
			
		||||
    Get-Process -Id $vaultPid -ErrorAction SilentlyContinue | Format-List *
 | 
			
		||||
    
 | 
			
		||||
    # Show logs
 | 
			
		||||
    Write-Output "=== LOG (last 20 lines) ==="
 | 
			
		||||
    Get-Content ".\vault-logs\vault.log" -ErrorAction SilentlyContinue | Select-Object -Last 20
 | 
			
		||||
    
 | 
			
		||||
    # Cleanup
 | 
			
		||||
    Stop-Process -Id $vaultPid -Force -ErrorAction SilentlyContinue
 | 
			
		||||
    exit 1
 | 
			
		||||
if (-not $ok) {
 | 
			
		||||
    Write-Error "Vault did not become ready in time"
 | 
			
		||||
    Exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Write-Output "✅ Vault server started successfully!"
 | 
			
		||||
Write-Host "Vault is up and running."
 | 
			
		||||
@@ -1,55 +1,22 @@
 | 
			
		||||
if (Test-Path "vault.pid") {
 | 
			
		||||
    $vaultPid = Get-Content "vault.pid"
 | 
			
		||||
    Write-Host "Stopping Vault process $vaultPid"
 | 
			
		||||
    Stop-Process -Id $vaultPid -Force
 | 
			
		||||
    Remove-Item "vault-pid" -Force
 | 
			
		||||
} else {
 | 
			
		||||
    Write-Host "No PID file found, Vault may not have started."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to display logs
 | 
			
		||||
function Show-VaultLogs {
 | 
			
		||||
    Write-Output "=== VAULT SERVER STDOUT (last 50 lines) ==="
 | 
			
		||||
    Get-Content "vault-logs/stdout.log" -ErrorAction SilentlyContinue | Select-Object -Last 50
 | 
			
		||||
    Write-Output "=== VAULT SERVER STDERR (last 50 lines) ==="
 | 
			
		||||
    Get-Content "vault-logs/stderr.log" -ErrorAction SilentlyContinue | Select-Object -Last 50
 | 
			
		||||
if (Test-Path "vault.out.log") {
 | 
			
		||||
    Write-Output "=== VAULT SERVER STDOUT (last 25 lines) ==="
 | 
			
		||||
    Get-Content "vault.out.log" -ErrorAction SilentlyContinue | Select-Object -Last 25
 | 
			
		||||
} else {
 | 
			
		||||
    Write-Output "No Vault output log found!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Read PID from file (Gitea alternative to env vars)
 | 
			
		||||
$vaultPid = $null
 | 
			
		||||
if (Test-Path "vault-pid.txt") {
 | 
			
		||||
    $vaultPid = Get-Content "vault-pid.txt" -Raw
 | 
			
		||||
    Write-Output "✅ Found Vault PID: $vaultPid"
 | 
			
		||||
if (Test-Path "vault.err.log") {
 | 
			
		||||
    Write-Output "=== VAULT SERVER STDERR (last 25 lines) ==="
 | 
			
		||||
    Get-Content "vault.err.log" -ErrorAction SilentlyContinue | Select-Object -Last 25
 | 
			
		||||
} else {
 | 
			
		||||
    Write-Output "No Vault error log found!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check if previous steps failed
 | 
			
		||||
$previousStepFailed = $false
 | 
			
		||||
if ("${{ steps.start-vault.outcome }}" -eq "failure") {
 | 
			
		||||
    $previousStepFailed = $true
 | 
			
		||||
    Write-Output "❌ Vault startup step failed"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Stop the Vault process if we have a PID
 | 
			
		||||
if ($vaultPid -and ($vaultPid -ne '')) {
 | 
			
		||||
if ($previousStepFailed) {
 | 
			
		||||
    Write-Output "❌ Previous step failed, showing Vault logs:"
 | 
			
		||||
    Show-VaultLogs
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Stop the Vault process
 | 
			
		||||
try {
 | 
			
		||||
    Stop-Process -Id $vaultPid -Force -ErrorAction Stop
 | 
			
		||||
    Write-Output "✅ Stopped Vault process $vaultPid"
 | 
			
		||||
} catch {
 | 
			
		||||
    Write-Warning "❌ Failed to stop process $vaultPid: $($_.Exception.Message)"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Clean up any remaining Vault processes
 | 
			
		||||
$vaultProcesses = Get-Process -Name "vault" -ErrorAction SilentlyContinue
 | 
			
		||||
if ($vaultProcesses) {
 | 
			
		||||
    Write-Output "✅ Found additional Vault processes, stopping them..."
 | 
			
		||||
    $vaultProcesses | Stop-Process -Force -ErrorAction SilentlyContinue
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Always show logs if we're in a failure state
 | 
			
		||||
if ($previousStepFailed -or "${{ job.status }}" -eq "failure") {
 | 
			
		||||
    Write-Output "❌ Job failed, showing final Vault logs:"
 | 
			
		||||
    Show-VaultLogs
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Cleanup PID file
 | 
			
		||||
if (Test-Path "vault-pid.txt") {
 | 
			
		||||
    Remove-Item "vault-pid.txt" -Force
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user