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).
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