jms-gitea/gcloud-configs.md

123 lines
3.7 KiB
Markdown

```
┌───────────────── 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:
```bash
# 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.