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.
-
Open your terminal and
cdinto your Client A local project folder. -
Tie the folder to the remote project by running:
Bash
firebase use --add -
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:
-
accountshows the correct client email. -
projectmatches 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.