Zum Inhalt

Umgebungen & Firebase-Projekte

Übersicht

Tech Schuppen V80 betreibt eine einzige Firebase-Instanz (Production). Es gibt kein Dev/Staging — Tests laufen mit dedizierten Test-Usern direkt auf Production (Tenant-isoliert).

Production
Firebase-Projekt techschuppen-v80-prod
ERP App techschuppen-v80-prod.web.app
Shop App techschuppen-v80-prod-shop.web.app
Firebase Console console / Prod
Firestore firestore / Prod
Authentication auth / Prod
Cloud Messaging fcm / Prod
Region europe-west3 (Frankfurt)

GitHub Secrets & Variables

Alle Secrets werden im GitHub-Repo unter Settings → Environments → production verwaltet.

Pflicht-Secrets

Secret Beschreibung Gesetzt?
DEPLOY_FIREBASE_SERVICE_ACCOUNT Firebase Service Account JSON (Prod) — benötigt Rollen: Firebase Admin, Cloud Datastore Index Admin
CORE_REPO_PAT Fine-grained PAT mit Contents: Read auf Tech-Schuppen/easySale

Pflicht-Variablen

Variable Beschreibung Gesetzt?
FIREBASE_PROJECT Firebase-Projekt-ID für Deploy-Preflight und backend-only Releases

Org-Level Secrets (automatisch verfügbar, kein Einrichten nötig)

Secret Beschreibung
CLOUDFLARE_ACCOUNT_ID Cloudflare Account-ID (für Shop-Web-Hosting via Cloudflare Pages)
CLOUDFLARE_API_TOKEN Cloudflare API-Token (für Cloudflare Pages Deployments)

Variables (keine Secrets, Klartext)

Variable Beschreibung Gesetzt?
CLOUDFLARE_PAGES_PROJECT Name des Cloudflare Pages Projekts für die Shop-App

Optionale Secrets – Fehlerverfolgung

Secret Beschreibung Gesetzt?
SENTRY_DSN Sentry DSN für Crash-Reporting (ERP + Shop)

Optionale Secrets – Android (ERP)

Secret Beschreibung Gesetzt?
ANDROID_KEYSTORE_ERP_BASE64 Android Keystore (ERP), Base64-kodiert
ANDROID_KEYSTORE_ERP_PASSWORD Keystore-Passwort (ERP)
ANDROID_KEY_ERP_ALIAS Key-Alias im Keystore (ERP)
ANDROID_KEY_ERP_PASSWORD Key-Passwort (ERP)

Optionale Secrets – Android (Shop)

Secret Beschreibung Gesetzt?
ANDROID_KEYSTORE_SHOP_BASE64 Android Keystore (Shop), Base64-kodiert
ANDROID_KEYSTORE_SHOP_PASSWORD Keystore-Passwort (Shop)
ANDROID_KEY_SHOP_ALIAS Key-Alias im Keystore (Shop)
ANDROID_KEY_SHOP_PASSWORD Key-Passwort (Shop)
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON Google Play Service Account JSON (für AAB-Upload)
GOOGLE_SERVICES_JSON_SHOP google-services.json für Shop (Prod-Firebase-Projekt)
FIREBASE_CONFIG_SHOP Firebase-Konfiguration Shop Web (Prod)

Optionale Secrets – iOS (ERP + Shop)

Secret Beschreibung Gesetzt?
IOS_DIST_CERTIFICATE_BASE64 iOS Distribution Certificate (.p12), Base64-kodiert
IOS_DIST_CERTIFICATE_PASSWORD Certificate-Passwort
IOS_PROVISION_PROFILE_ERP_BASE64 Provisioning Profile ERP (.mobileprovision), Base64-kodiert
IOS_PROVISION_PROFILE_SHOP_BASE64 Provisioning Profile Shop (.mobileprovision), Base64-kodiert
APP_STORE_CONNECT_API_KEY_ID App Store Connect API Key ID
APP_STORE_CONNECT_API_ISSUER_ID App Store Connect Issuer ID
APP_STORE_CONNECT_API_KEY_BASE64 App Store Connect Private Key (.p8), Base64-kodiert

Firebase-Konfiguration

Die Firebase-Konfiguration (ERP) liegt unter erp/assets/firebase_config/:

erp/assets/firebase_config/
└── firebase_config_production.json    ← Prod-Firebase-Projekt

Diese Datei ist im Repo eingecheckt und enthält keine sensitiven Secrets (nur öffentliche API-Keys, die das Firebase-SDK zur Verbindung mit dem richtigen Projekt benötigt).

Die Shop-Firebase-Konfiguration (google-services.json, Web-Config) wird über GitHub Secrets injiziert — sie liegt nicht im Repo.


Firestore-Regeln

Die Sicherheitsregeln werden aus Core + Client-Erweiterungen gemerged:

firebase/
├── firestore_core.rules      ← Core-Regeln (aus easySale, nicht manuell ändern)
├── firestore_extra.rules     ← Client-spezifische Erweiterungen (hier ändern)
├── storage_core.rules        ← Core Storage-Regeln
└── storage_extra.rules       ← Client-spezifische Storage-Erweiterungen

Deploy: ./deploy_rules.sh (oder über client-release.yml mit platforms=firebase).

Vor jedem Release prüfen die zentralen Workflows automatisch:

  • CORE_REPO_PAT kann das private Core-Repo wirklich lesen
  • Pflicht-Secrets im Environment production sind gesetzt
  • FIREBASE_PROJECT ist vorhanden
  • der Functions-Deploy kann smtp-config aus Secret Manager lesen