🚀 GitHub Actions Deployment Setup¶
Komplette Anleitung zum Einrichten der automatischen App-Deployments.
📱 Deine App-IDs¶
ERP App:
- iOS Bundle ID: de.easysale.erp
- Android Application ID: de.easysale.erp
Shop App:
- iOS Bundle ID: de.easysale.app.demo
- Android Application ID: de.easysale.<kunde>.shop
🔧 Setup-Schritte¶
1️⃣ Android Keystores generieren (5 Minuten)¶
cd /Users/michaelmodlmair/Development/easySale
chmod +x scripts/generate_android_keystores.sh
./scripts/generate_android_keystores.sh
Das Skript wird:
- ✅ ERP & Shop Keystores generieren
- ✅ Base64-Kodierung erstellen
- ✅ Alle benötigten Secrets in eine Datei schreiben
- ✅ Keystores sicher in ~/.easysale/keystores/ speichern
Ergebnis: Datei ~/.easysale/keystores/github-secrets.txt mit 8 Secrets
2️⃣ iOS Zertifikate & Profile erstellen (15-20 Minuten)¶
2a. Distribution Certificate exportieren¶
- Xcode öffnen
- Xcode → Settings (⌘,) → Accounts
- Dein Apple-Account auswählen
-
"Manage Certificates" klicken
-
Certificate erstellen (falls noch nicht vorhanden)
-
"+" klicken → "Apple Distribution" auswählen
-
Certificate exportieren
- Keychain Access öffnen
- "Apple Distribution: ..." Zertifikat suchen
- Rechtsklick → "Exportieren"
- Format:
.p12wählen - Passwort vergeben und merken
- Speichern (z.B. als
distribution.p12)
2b. Provisioning Profiles erstellen¶
-
Gehe zu: https://developer.apple.com/account/resources/profiles/
-
ERP Profile erstellen:
- "+" klicken
- "App Store" auswählen
- Bundle ID:
de.easysale.erpauswählen - Dein Distribution-Zertifikat auswählen
- Name: "ERP Distribution"
-
Generieren & Herunterladen
-
Shop Profile erstellen:
- Analog zu Schritt 2
- Bundle ID:
de.easysale.app.demo - Name: "Shop Distribution"
- Generieren & Herunterladen
2c. App Store Connect API Key erstellen¶
-
Gehe zu: https://appstoreconnect.apple.com/access/integrations/api
-
Key erstellen:
- "+" klicken
- Name: "GitHub Actions"
- Rolle: "App Manager" auswählen
-
Key wird generiert
-
Key herunterladen:
- .p8-Datei herunterladen (z.B.
AuthKey_ABC123XYZ.p8) - Key ID notieren (z.B.
ABC123XYZ) - Issuer ID notieren (steht oben auf der Seite)
2d. Skript ausführen¶
Das Skript wird nach den Dateien fragen und alle Secrets kodieren.
Ergebnis: Datei ~/.easysale/ios-secrets/github-secrets.txt mit 7 Secrets
3️⃣ Google Play Service Account erstellen (10 Minuten)¶
3a. Service Account in Google Cloud erstellen¶
- Gehe zu: https://play.google.com/console
- Deine App auswählen (oder erstellen)
- Setup → API access
-
"Link to a Google Cloud project" (oder neues Projekt)
-
Service Account erstellen:
- Link zur Google Cloud Console klicken
- IAM & Admin → Service Accounts
- "+ CREATE SERVICE ACCOUNT"
- Name: "GitHub Actions"
- Rolle: "Service Account User"
-
Fertig stellen
-
JSON Key erstellen:
- Service Account öffnen
- Keys → "ADD KEY" → "Create new key"
- Type: JSON
- JSON-Datei wird heruntergeladen
3b. Berechtigungen in Play Console vergeben¶
- Zurück zur Play Console
- Setup → Users and permissions
- "Invite new users"
- Service Account Email eingeben (z.B.
github-actions@...iam.gserviceaccount.com) - Berechtigung: "Release Manager" für beide Apps
- Einladen
3c. Secret vorbereiten¶
Secret Name: GOOGLE_PLAY_SERVICE_ACCOUNT_JSON
Secret Value: (kompletter JSON-Inhalt)
4️⃣ Apps in App Store Connect anlegen (5 Minuten)¶
Falls noch nicht vorhanden:
-
Gehe zu: https://appstoreconnect.apple.com/apps
-
ERP App anlegen:
- "+" → "New App"
- Bundle ID:
de.easysale.erp - Name: "EasySale ERP"
-
Erstellen
-
Shop App anlegen:
- "+" → "New App"
- Bundle ID:
de.easysale.app.demo - Name: "EasySale Shop"
- Erstellen
5️⃣ Apps in Google Play Console anlegen (5 Minuten)¶
Falls noch nicht vorhanden:
-
Gehe zu: https://play.google.com/console
-
ERP App anlegen:
- "Create app"
- Application ID:
de.easysale.erp -
Mindestens einmal manuell eine APK hochladen
-
Shop App anlegen:
- "Create app"
- Application ID:
de.easysale.<kunde>.shop - Mindestens einmal manuell eine APK hochladen
6️⃣ GitHub Secrets eintragen (10 Minuten)¶
-
Gehe zu: https://github.com/[dein-username]/easySale/settings/secrets/actions
-
Secrets eintragen:
Öffne die generierten Dateien:
# Android Secrets anzeigen
cat ~/.easysale/keystores/github-secrets.txt
# iOS Secrets anzeigen
cat ~/.easysale/ios-secrets/github-secrets.txt
- Für jeden Secret:
- "New repository secret" klicken
- Name eingeben (exakt wie angegeben)
- Value einfügen
- "Add secret" klicken
Secrets-Checkliste:¶
Android (9 Secrets):
- [ ] ANDROID_KEYSTORE_ERP_BASE64
- [ ] ANDROID_KEYSTORE_ERP_PASSWORD
- [ ] ANDROID_KEY_ERP_ALIAS
- [ ] ANDROID_KEY_ERP_PASSWORD
- [ ] ANDROID_KEYSTORE_SHOP_BASE64
- [ ] ANDROID_KEYSTORE_SHOP_PASSWORD
- [ ] ANDROID_KEY_SHOP_ALIAS
- [ ] ANDROID_KEY_SHOP_PASSWORD
- [ ] GOOGLE_PLAY_SERVICE_ACCOUNT_JSON
iOS (7 Secrets):
- [ ] IOS_DIST_CERTIFICATE_BASE64
- [ ] IOS_DIST_CERTIFICATE_PASSWORD
- [ ] IOS_PROVISION_PROFILE_ERP_BASE64
- [ ] IOS_PROVISION_PROFILE_SHOP_BASE64
- [ ] APP_STORE_CONNECT_API_KEY_ID
- [ ] APP_STORE_CONNECT_API_ISSUER_ID
- [ ] APP_STORE_CONNECT_API_KEY_BASE64
7️⃣ Sensitive Dateien sicher löschen¶
Nach dem Eintragen in GitHub:
# Secrets-Dateien löschen
rm ~/.easysale/keystores/github-secrets.txt
rm ~/.easysale/ios-secrets/github-secrets.txt
# Temporäre Zertifikate/Profile löschen (falls erstellt)
rm ~/Downloads/*.p12
rm ~/Downloads/*.mobileprovision
rm ~/Downloads/*.p8
rm ~/Downloads/*.json
⚠️ WICHTIG: Die Keystore-Dateien (.jks) NICHT löschen! Sicher aufbewahren.
# Keystores bleiben hier:
ls ~/.easysale/keystores/
# erp-release.jks ← AUFBEWAHREN!
# shop-release.jks ← AUFBEWAHREN!
✅ Deployment testen¶
Nach dem Setup:
-
Änderung im
core/Ordner machen: -
Workflow beobachten:
- GitHub → Actions
- Workflows sollten automatisch starten
- Nach ~15-20 Min sollten Apps auf TestFlight/Play Store sein
🔒 Sicherheit¶
- ✅ Keystores in
.gitignore(bereits konfiguriert) - ✅ Secrets nur in GitHub Actions verfügbar
- ✅ Keystores lokal sicher aufbewahren
- ✅ Regelmäßig API Keys rotieren
- ✅ Service Account nur minimale Berechtigungen
🆘 Troubleshooting¶
Workflow schlägt fehl? 1. GitHub → Actions → Fehlgeschlagenen Workflow öffnen 2. Log-Output prüfen 3. Secret-Namen auf Tippfehler prüfen 4. Zertifikate/Profile auf Ablaufdatum prüfen
Build-Fehler? 1. Bundle IDs in Xcode/Android prüfen 2. Provisioning Profile mit Bundle ID abgleichen 3. Distribution Certificate gültig?
Upload-Fehler? 1. Apps in App Store Connect/Play Console angelegt? 2. Service Account Berechtigungen korrekt? 3. API Key gültig?