63 lines
3.0 KiB
PowerShell
63 lines
3.0 KiB
PowerShell
# =============================================================================
|
|
# 01-login.ps1 (Windows)
|
|
# Authenticates your local machine to Google Cloud and configures Docker
|
|
# to push images to Artifact Registry.
|
|
#
|
|
# Run this once per machine (or whenever your credentials expire).
|
|
# Linux users: run GCR/scripts/01-login.sh instead.
|
|
# =============================================================================
|
|
#Requires -Version 5.1
|
|
Set-StrictMode -Version Latest
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$EnvFile = Join-Path $ScriptDir "..\\.env"
|
|
|
|
# ── Load .env ─────────────────────────────────────────────────────────────────
|
|
if (-not (Test-Path $EnvFile)) {
|
|
Write-Error "ERROR: $EnvFile not found.`nCopy GCR\.env.example to GCR\.env and fill in your values first."
|
|
exit 1
|
|
}
|
|
|
|
$config = @{}
|
|
foreach ($line in Get-Content $EnvFile) {
|
|
# Skip blank lines and comments
|
|
if ($line -match '^\s*$' -or $line -match '^\s*#') { continue }
|
|
if ($line -match '^([^=]+)=(.*)$') {
|
|
$config[$Matches[1].Trim()] = $Matches[2].Trim()
|
|
}
|
|
}
|
|
|
|
$GCP_PROJECT_ID = if ($config['GCP_PROJECT_ID']) { $config['GCP_PROJECT_ID'] } else { '' }
|
|
$GCP_REGION = if ($config['GCP_REGION']) { $config['GCP_REGION'] } else { '' }
|
|
|
|
if (-not $GCP_PROJECT_ID) { Write-Error "GCP_PROJECT_ID is not set in .env"; exit 1 }
|
|
if (-not $GCP_REGION) { Write-Error "GCP_REGION is not set in .env"; exit 1 }
|
|
|
|
# ── Step 1: Authenticate user account ────────────────────────────────────────
|
|
Write-Host ">>> Logging in to Google Cloud..."
|
|
Write-Host " A browser window will open. Sign in with the Google account"
|
|
Write-Host " that has access to project: $GCP_PROJECT_ID"
|
|
Write-Host ""
|
|
gcloud auth login
|
|
|
|
# ── Step 2: Set default project ──────────────────────────────────────────────
|
|
Write-Host ""
|
|
Write-Host ">>> Setting default project to: $GCP_PROJECT_ID"
|
|
gcloud config set project $GCP_PROJECT_ID
|
|
|
|
# ── Step 3: Set default region ───────────────────────────────────────────────
|
|
Write-Host ">>> Setting default region to: $GCP_REGION"
|
|
gcloud config set run/region $GCP_REGION
|
|
|
|
# ── Step 4: Configure Docker to authenticate against Artifact Registry ────────
|
|
Write-Host ""
|
|
Write-Host ">>> Configuring Docker to authenticate with Artifact Registry..."
|
|
gcloud auth configure-docker "$GCP_REGION-docker.pkg.dev" --quiet
|
|
|
|
Write-Host ""
|
|
Write-Host ">>> Login complete. You are now authenticated as:"
|
|
gcloud auth list --filter=status:ACTIVE --format='value(account)'
|
|
Write-Host ""
|
|
Write-Host ">>> Next step: run GCR\scripts\02-setup-project.ps1"
|