# ============================================================================= # 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"