jms-gitea/gcloud-configs.md

3.7 KiB

              ┌───────────────── GLOBAL STATE ─────────────────┐
              │                                                │
   ┌──────────┴──────────┐                          ┌──────────┴──────────┐
   │ CONFIG: client-a    │                          │ CONFIG: client-b    │
   ├─────────────────────┤                          ├─────────────────────┤
   │ 👤 you@clientA.com  │                          │ 👤 you@clientB.com  │
   │ 🆔 project-id-aaa   │                          │ 🆔 project-id-bbb   │
   └─────────────────────┘                          └─────────────────────┘
              ▲                                                ▲
              │ (gcloud config configurations activate ...)    │
              └─────────────────── YOUR TERMINAL ──────────────┴───

🛠️ One-Time Setup (Do this once per client)

Follow these steps carefully for each individual client account. Do not use any logout commands.

1. Set up Client A

Open your terminal and run these 4 commands in order:

# 1. Create a workspace profile named after Client A
gcloud config configurations create client-a

# 2. Log in with Client A's specific email address
gcloud auth login

# 3. Authenticate local code running on your machine (ADC)
gcloud auth application-default login

# 4. Lock this profile to Client A's exact Google Cloud project ID
gcloud config set project CLIENT_A_PROJECT_ID

2. Set up Client B

Now, repeat the exact same pattern for your next client. This will not erase your Client A setup.

Bash

# 1. Create a workspace profile named after Client B
gcloud config configurations create client-b

# 2. Log in with Client B's specific email address
gcloud auth login

# 3. Authenticate local code for Client B
gcloud auth application-default login

# 4. Lock this profile to Client B's project ID
gcloud config set project CLIENT_B_PROJECT_ID

📂 The Firebase Connection

The Firebase CLI automatically shares permissions with your active gcloud profile. You do not need to log in or out of Firebase anymore.

  1. Open your terminal and cd into your Client A local project folder.

  2. Tie the folder to the remote project by running:

    Bash

    firebase use --add
    
    
  3. Select Client A's project from the terminal list and name the alias default.

(Repeat this inside your Client B directory using Client B's project).

🔄 Daily Workflow (How to switch safely)

When you sit down to work, switching takes exactly one command.

To switch to Client A:

Bash

gcloud config configurations activate client-a

To switch to Client B:

Bash

gcloud config configurations activate client-b

🛑 The "Am I Safe?" Sanity Check

If you are ever worried about deploying code to the wrong client, navigate to your project folder and run this "Where am I?" command combo:

Bash

gcloud config list && firebase use

What a successful check looks like:

  • account shows the correct client email.

  • project matches the expected Google Cloud environment.

  • The final line lists the active Firebase alias matching your folder context.

If everything matches, you are 100% safe to deploy.