Zum Inhalt

🚀 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

  1. Xcode öffnen
  2. Xcode → Settings (⌘,) → Accounts
  3. Dein Apple-Account auswählen
  4. "Manage Certificates" klicken

  5. Certificate erstellen (falls noch nicht vorhanden)

  6. "+" klicken → "Apple Distribution" auswählen

  7. Certificate exportieren

  8. Keychain Access öffnen
  9. "Apple Distribution: ..." Zertifikat suchen
  10. Rechtsklick → "Exportieren"
  11. Format: .p12 wählen
  12. Passwort vergeben und merken
  13. Speichern (z.B. als distribution.p12)

2b. Provisioning Profiles erstellen

  1. Gehe zu: https://developer.apple.com/account/resources/profiles/

  2. ERP Profile erstellen:

  3. "+" klicken
  4. "App Store" auswählen
  5. Bundle ID: de.easysale.erp auswählen
  6. Dein Distribution-Zertifikat auswählen
  7. Name: "ERP Distribution"
  8. Generieren & Herunterladen

  9. Shop Profile erstellen:

  10. Analog zu Schritt 2
  11. Bundle ID: de.easysale.app.demo
  12. Name: "Shop Distribution"
  13. Generieren & Herunterladen

2c. App Store Connect API Key erstellen

  1. Gehe zu: https://appstoreconnect.apple.com/access/integrations/api

  2. Key erstellen:

  3. "+" klicken
  4. Name: "GitHub Actions"
  5. Rolle: "App Manager" auswählen
  6. Key wird generiert

  7. Key herunterladen:

  8. .p8-Datei herunterladen (z.B. AuthKey_ABC123XYZ.p8)
  9. Key ID notieren (z.B. ABC123XYZ)
  10. Issuer ID notieren (steht oben auf der Seite)

2d. Skript ausführen

chmod +x scripts/generate_ios_secrets.sh
./scripts/generate_ios_secrets.sh

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

  1. Gehe zu: https://play.google.com/console
  2. Deine App auswählen (oder erstellen)
  3. Setup → API access
  4. "Link to a Google Cloud project" (oder neues Projekt)

  5. Service Account erstellen:

  6. Link zur Google Cloud Console klicken
  7. IAM & Admin → Service Accounts
  8. "+ CREATE SERVICE ACCOUNT"
  9. Name: "GitHub Actions"
  10. Rolle: "Service Account User"
  11. Fertig stellen

  12. JSON Key erstellen:

  13. Service Account öffnen
  14. Keys → "ADD KEY" → "Create new key"
  15. Type: JSON
  16. JSON-Datei wird heruntergeladen

3b. Berechtigungen in Play Console vergeben

  1. Zurück zur Play Console
  2. Setup → Users and permissions
  3. "Invite new users"
  4. Service Account Email eingeben (z.B. github-actions@...iam.gserviceaccount.com)
  5. Berechtigung: "Release Manager" für beide Apps
  6. Einladen

3c. Secret vorbereiten

# JSON-Inhalt in Zwischenablage kopieren
cat ~/Downloads/easysale-*.json | pbcopy

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:

  1. Gehe zu: https://appstoreconnect.apple.com/apps

  2. ERP App anlegen:

  3. "+" → "New App"
  4. Bundle ID: de.easysale.erp
  5. Name: "EasySale ERP"
  6. Erstellen

  7. Shop App anlegen:

  8. "+" → "New App"
  9. Bundle ID: de.easysale.app.demo
  10. Name: "EasySale Shop"
  11. Erstellen

5️⃣ Apps in Google Play Console anlegen (5 Minuten)

Falls noch nicht vorhanden:

  1. Gehe zu: https://play.google.com/console

  2. ERP App anlegen:

  3. "Create app"
  4. Application ID: de.easysale.erp
  5. Mindestens einmal manuell eine APK hochladen

  6. Shop App anlegen:

  7. "Create app"
  8. Application ID: de.easysale.<kunde>.shop
  9. Mindestens einmal manuell eine APK hochladen

6️⃣ GitHub Secrets eintragen (10 Minuten)

  1. Gehe zu: https://github.com/[dein-username]/easySale/settings/secrets/actions

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

  1. Für jeden Secret:
  2. "New repository secret" klicken
  3. Name eingeben (exakt wie angegeben)
  4. Value einfügen
  5. "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:

  1. Änderung im core/ Ordner machen:

    cd /Users/michaelmodlmair/Development/easySale
    echo "# Test" >> core/README.md
    git add core/README.md
    git commit -m "test: Deployment-Test"
    git push origin main
    

  2. Workflow beobachten:

  3. GitHub → Actions
  4. Workflows sollten automatisch starten
  5. 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?


📚 Zusätzliche Ressourcen