Zum Hauptinhalt springen
CI/CD

Automatischer Capacitor Android-Build mit GitHub Aktionen

Wie Sie in 5 Minuten einen CI/CD-Pipeline für Ihr Android-Capacitor-App mit fastlane und GitHub Actions einrichten

Martin Donadieu

Martin Donadieu

Content-Marketing-Spezialist

Automatischer Capacitor Android-Build mit GitHub Aktionen

Die Einrichtung von CI/CD für Capacitor-Anwendungen kann komplex und zeitaufwändig sein. Hier ist, was Sie wissen müssen:

Wir empfehlen nun die Verwendung von Capgo-Build mit der Capgo CLI zur Erstellung von nativen Capacitor-Anwendungen. Diese Anleitung zu Fastlane wird für Teams aufrechterhalten, die bestehende GitHub-Actions-Pipelines weiterhin unterhalten, aber neue Android-Builds sollten die Capgo CLI verwenden, damit Sie Fastlane, Gradle-Runner, Keystore-Dateien und Upload-Skripte nicht selbst pflegen müssen.

Voraussetzungen

Bevor Sie beginnen, müssen Sie Folgendes einrichten:

  • Eine GitHub-Konto mit Administratorzugriff
  • Ihre App ist bereits auf dem Google Play Store veröffentlicht und mit der richtigen Signierung versehen
  • Android-Signierungs-Schlüssel und Keystore-Dateien
  • Ein Google Cloud Console-Projekt mit der API-Funktion im Google Play Store aktiviert
  • Dienstkonten mit geeigneten Berechtigungen
  • Verständnis der GitHub Aktionen-Workflows
  • Kenntnisse der Fastlane-Konfiguration
  • Zeit zur Wartung und Fehlersuche im Pipeline

Capgo Build für CI/CD durch Capgo

Vermeiden Sie die Wartung von Fastlane, Gradle-Runner, Keystore und Upload-Script Capgo Build __CAPGO_KEEP_0__ Build führt signierte native Android-Builds aus Ihrem bestehenden CI/CD-Pipeline:

  • Arbeitet mit Ihrer PipelineAuslösen Sie Capgo Build von GitHub Aktionen, GitLab CI, Jenkins oder lokalen Skripten nach Ihrem Web-Build und npx cap sync.
  • Signieren Sie aus CI-SecretsHalten Sie Android-Keystores, Schlüsselalias, Passwörter und Play-Console-Dienstkonto-JSON in Ihren eigenen CI-Secrets.
  • Keine native Runner-Pflege: Capgo Build stellt gepflegte Android-Buildumgebungen bereit, sodass Sie keine SDK-Images, Gradle-Cache-Probleme oder Fastlane-Linien verwalten müssen.
  • Artikel und Einreichung: Laden Sie signierte Artikel für QA oder einreichen Sie Release-Builds über die Capgo CLI.

Preise

  • Capgo-Pläne beginnen bei 12 $/Monat
  • Inklusive OTA-Updates und etwa 15 native Builds pro Monat
  • Zusätzliche Build-Minuten werden nach Minute über Kredite abgerechnet

Einrichten Sie Capgo Build in CI/CD

Manuelle Einrichtungsanleitung

Hier ist, was Sie tun müssen:

GitHub-Actions-Preise

Preis GitHub Aktion

GitHub Aktionen bietet kostenlose Minuten basierend auf Ihrem Repository-Typ:

  • Öffentliche Repositorys: 2.000 Minuten/Monat
  • Private Repositorys: 2.000 Minuten/Monat (Linux-Runner)

Für private Projekte betragen die Kosten etwa $0,008/Minute. Ein typischer Build dauert 3-5 Minuten.

Manuelle Setup-Schritte

  1. Erstellen Sie einen Android-Keystore
  2. Konfigurieren Sie ein Google Play Service-Konto
  3. Konfigurieren Sie Fastlane
  4. Konfigurieren Sie GitHub-Geheimnisse
  5. Erstellen Sie eine GitHub-Aktion-Workflow

1. Erstellen Sie einen Android-Keystore

Bevor Sie Ihre Android-App signieren und veröffentlichen können, müssen Sie ein Keystore-File erstellen. Dies ist eine einmalige Einstellung.

Keystore mit keytool generieren

Führen Sie diesen Befehl in Ihrem Terminal aus:

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

Sie werden aufgefordert:

  • Keystore-Passwort: Wählen Sie einen starken Passwort (Sie benötigen dies als KEYSTORE_STORE_PASSWORD)
  • Schlüsselpasswort: Wählen Sie einen starken Passwort (Sie benötigen dies als KEYSTORE_KEY_PASSWORD)
  • Ihr Name, Organisation usw.: Füllen Sie Ihre Details ein

Wichtige Hinweise

  • Speichern Sie diese Werte sicher:

    • Speicherort des Keystores (z.B., my-release-key.keystore)
    • Alias für die Schlüssel (z.B., my-key-alias) - Sie benötigen dies als KEYSTORE_KEY_ALIAS
    • Keystore-Passwort - Sie benötigen dies als KEYSTORE_STORE_PASSWORD
    • Passwort für die Schlüssel - Sie benötigen dies als KEYSTORE_KEY_PASSWORD
  • Sichern Sie den Keystore-Datei: Wenn Sie ihn verlieren, können Sie Ihre veröffentlichte App nicht aktualisieren

  • Halten Sie es geheim: Kommitieren Sie den Keystore-Datei nie in Git

  • Sichern Sie es sicher: Halten Sie mehrere Sicherungskopien in sicheren Orten

Alternative: Verwenden Sie einen bestehenden Keystore

If Sie bereits Ihre App veröffentlicht haben, müssen Sie denselben Keystore verwenden, den Sie ursprünglich verwendet haben. Sie können ihn finden:

  • Auf Ihrem lokalen Computer, an dem Sie die App zuerst gebaut haben
  • In Ihrem Play-Console → Einstellungen → App-Zertifizierung (wenn Sie Google Play App-Zertifizierung verwenden)

2. Einrichten Sie Google Play Service-Konto

Damit GitHub-Aktionen Builds auf Google Play hochladen können, benötigen Sie ein Dienstkonto

Schritt 2.1: Erstellen Sie ein Google Cloud-Projekt

  1. Gehen Sie zu Google Cloud Console
  2. Erstellen Sie ein neues Projekt oder wählen Sie ein bestehendes Projekt aus
  3. Haben Sie die Projekt-ID festgehalten

Schritt 2.2: Aktivieren Sie Google Play-Entwickler API

  1. In Google Cloud Console gehen Sie zu Dienste & ServicesBibliothek
  2. Suchen Sie nach “Google Play Android-Entwickler API”
  3. Klicken Sie Aktivieren

Schritt 2.3: Erstellen Sie einen Dienstkonten

  1. Zum IAM & AdminDienstkonten
  2. Klicken Sie Dienstkonten erstellen
  3. Details eingeben:
    • Name: github-actions-uploader
    • Beschreibung: „Dienstkonten für GitHub Aktionen zum Hochladen von Builds”
  4. Klicken Erstellen und Fortsetzen
  5. Rollenzuweisung für den Moment überspringen (klicken Fortsetzen, dann Fertig)

Schritt 2.4: Erstellen Sie eine Dienstkonten-Schlüssel

  1. Klicken Sie auf die neu erstellte Dienstkonten
  2. Zu Schlüssel Registerkarte
  3. Klicken Sie Schlüssel hinzufügenNeuen Schlüssel erstellen
  4. Wählen Sie JSON Format
  5. Klicken Sie Erstellen
  6. Ein JSON-Datei wird heruntergeladen - Speichern Sie dies sicher auf,Sie benötigen es später

Schritt 2.5: Zugriffsrecht erteilen in Play Console

  1. Gehe zu Google Play Console
  2. Gehe zu EinrichtungAPI Zugriff
  3. Unter Dienstkonten, klicke Zugriffsrecht erteilen für deine Dienstkonto
  4. Auf der Anwendungsrechte Registerkarte, Ihre App hinzufügen
  5. Auf der Konto-Rechte Registerkarte, diese Rechte erteilen:
    • Anwendungsinformationen anzeigen und Meldungen in Bulk herunterladen (nur Lesen)
    • Erstellen, bearbeiten und Löschen von Entwurfsanwendungen
    • Anwendungen auf Testtracks freigeben
    • Anwendungen auf Produktions-, Ausschluss- und andere Tracks freigeben
  6. Klicken Benutzer einladen
  7. Klicken Einladung senden

Schritt 2.6: Überprüfe die JSON-Schlüssel

Das heruntergeladene JSON-Datei sollte wie folgt aussehen:

{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "...",
  "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
  "client_email": "github-actions-uploader@your-project-id.iam.gserviceaccount.com",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "..."
}

Du wirst dies in der GitHub-Geheimnisse-Einstellungsschritt in Base64 umwandeln.

3. Fastlane einrichten

Erstelle einen fastlane Ordner in deinem Projekt-Root und füge einen Fastfile mit diesem Inhalt hinzu:

default_platform(:android)

KEYSTORE_KEY_ALIAS = ENV["KEYSTORE_KEY_ALIAS"]
KEYSTORE_KEY_PASSWORD = ENV["KEYSTORE_KEY_PASSWORD"]
KEYSTORE_STORE_PASSWORD = ENV["KEYSTORE_STORE_PASSWORD"]

platform :android do
    desc "Deploy a beta version to the Google Play"
    private_lane :verify_changelog_exists do |version_code: |
      changelog_path = "android/metadata/en-US/changelogs/#{version_code}.txt"
      UI.user_error!("Missing changelog file at #{changelog_path}") unless File.exist?(changelog_path)
      UI.message("Changelog exists for version code #{version_code}")
    end

    private_lane :verify_upload_to_staging do |version_name: |
      UI.message "Skipping staging verification step"
    end
    
    lane :beta do
        keystore_path = "#{Dir.tmpdir}/build_keystore.keystore"
        File.write(keystore_path, Base64.decode64(ENV['ANDROID_KEYSTORE_FILE']))
        json_key_data = Base64.decode64(ENV['PLAY_CONFIG_JSON'])
        
        # Get previous build number and increment
        previous_build_number = google_play_track_version_codes(
            package_name: ENV['DEVELOPER_PACKAGE_NAME'],
            track: "internal",
            json_key_data: json_key_data,
        )[0]
        current_build_number = previous_build_number + 1
        sh("export NEW_BUILD_NUMBER=#{current_build_number}")
        
        # Build the app
        gradle(
          task: "clean bundleRelease",
          project_dir: 'android/',
          print_command: false,
          properties: {
            "android.injected.signing.store.file" => "#{keystore_path}",
            "android.injected.signing.store.password" => "#{KEYSTORE_STORE_PASSWORD}",
            "android.injected.signing.key.alias" => "#{KEYSTORE_KEY_ALIAS}",
            "android.injected.signing.key.password" => "#{KEYSTORE_KEY_PASSWORD}",
            'versionCode' => current_build_number
          })
        
        # Upload to Play Store
        upload_to_play_store(
            package_name: ENV['DEVELOPER_PACKAGE_NAME'],
            json_key_data: json_key_data,
            track: 'internal',
            release_status: 'completed',
            skip_upload_metadata: true,
            skip_upload_changelogs: true,
            skip_upload_images: true,
            skip_upload_screenshots: true,
        )
    end
end

4. GitHub-Geheimnisse konfigurieren

Jetzt, da du dein Keystore und deinen Dienstkontos-JSON hast, musst du sie sicher in GitHub speichern.

Schritt 4.1: GitHub-Geheimnisse zugreifen

  1. Gehe zu deinem Repository auf GitHub
  2. Klicken EinstellungenGeheime Variablen und UmgebungsvariablenAktionen
  3. Klicken Neuer Repository-Schlüssel

Schritt 4.2: Fügen Sie erforderliche Geheimnisse hinzu

Fügen Sie jedes dieser Geheimnisse einzeln hinzu:

__CAPGO_KEEP_0__

  1. Laden Sie das heruntergeladene JSON-Datei Ihres Dienstkontos im Schritt 2.4
  2. Konvertieren Sie es in Base64:

Auf macOS/Linux:

base64 service_account_key.json | pbcopy

Auf Windows (PowerShell):

[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
  1. Erstellen Sie einen neuen geheimen Schlüssel namens PLAY_CONFIG_JSON und fügen Sie den Base64-String ein

__CAPGO_KEEP_0__

  1. Konvertieren Sie Ihr Keystore in Base64:

Auf macOS/Linux:

base64 my-release-key.keystore | pbcopy

Auf Windows (PowerShell):

[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
  1. Erstellen Sie einen neuen geheimen Schlüssel namens ANDROID_KEYSTORE_FILE und fügen Sie den Base64-String ein

__CAPGO_KEEP_0__

Erstellen Sie einen neuen geheimen Schlüssel mit dem Alias, den Sie verwendet haben, wenn Sie das Keystore generiert haben (z.B., my-key-alias)

Erstellen Sie einen neuen geheimen Schlüssel mit dem Passwort, das Sie für das Keystore verwendet haben (z.B.,

Erstellen Sie ein neues Geheimnis mit der Schlüsselwort-Schlüssel, die Sie bei der Erstellung des Keystores festgelegt haben

__CAPGO_KEEP_0__

Erstellen Sie ein neues Geheimnis mit dem Keystore-Schlüssel, den Sie bei der Erstellung des Keystores festgelegt haben

__CAPGO_KEEP_0__

Erstellen Sie ein neues Geheimnis mit Ihrem Anwendungs-Paket-Namen (z.B., com.example.app)

Sie finden Ihren Paketnamen in android/app/build.gradle unter applicationId

Schritt 4.3: Überprüfen Sie alle Geheimnisse

Stellen Sie sicher, dass Sie diese 6 Geheimnisse konfiguriert haben:

  • ✅ PLAY_CONFIG_JSON
  • ✅ ANDROID_KEYSTORE_FILE
  • ✅ __CAPGO_KEEP_0__
  • ✅ SICHERHEITSZERTIFIKATSCHLÜSSEL
  • ✅ SICHERHEITSZERTIFIKATSLAGERSCHLÜSSEL
  • ✅ ENTWICKLER-APK-NAMEN

5. Erstelle GitHub Actions Workflow

Erstellen .github/workflows/build-upload-android.yml:

name: Build and Deploy Android App

on:
  push:
    tags:
      - '*'

jobs:
  build_android:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: npm
          
      - name: Install dependencies
        run: npm ci
        
      - name: Cache Gradle
        uses: actions/cache@v5
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-
            
      - name: Build app
        run: npm run build
        
      - name: Sync Capacitor
        run: npx cap sync
        
      - name: Setup Java
        uses: actions/setup-node@v5
        with:
            distribution: 'zulu'
            java-version: '17'
            
      - name: Setup Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.0'
          bundler-cache: true
          
      - name: Run Fastlane
        uses: maierj/fastlane-action@v3.1.0
        env:
          PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
          ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
          DEVELOPER_PACKAGE_NAME: ${{ secrets.DEVELOPER_PACKAGE_NAME }}
          KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
          KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
          KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
        with:
          lane: android beta
          
      - name: Upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: android-release
          path: ./android/app/build/outputs/bundle/release/app-release.aab
          retention-days: 10

Wie es funktioniert

  1. Erstelle einen Git-Tag, um den Workflow auszulösen
  2. GitHub Actions baut dein App
  3. Fastlane lädt es in den Google Play Beta-Kanal hoch
  4. Deine App wird automatisch aktualisiert

Zeit und Kosten für das Bauen

  • Bauzeit: 3-5 Minuten
  • Kosten für private Repositories: ~$0.04 pro Build
  • Kostenlos für Open-Source-Projekte

CI/CD-Einrichtungsanleitungen

Alternative CI/CD-Plattformen

Live-Updates & Bereitstellung

Ressourcen

Weitermachen von der automatischen Capacitor Android-Build mit GitHub Aktionen

Wenn Sie __CAPGO_KEEP_0__ verwenden Automatische GitHub Android-Builds mit Capacitor Aktionen um die CI/CD-Automatisierung zu planen, verbinden Sie es mit Capgo CI/CD für den Produktworkflow in Capgo CI/CD Capgo Native Builds für den Produktworkflow in Capgo Native Builds Capgo Integrations für den Produktworkflow in Capgo Integrations CI/CD-Integration für die Implementierungsdetails in CI/CD-Integration GitHub Actions-Integration für die Implementierungsdetails in GitHub Aktionen-Integration.

Live-Updates für Capacitor-Anwendungen

Wenn ein Web-Schicht-Bug aktiv ist, liefern Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung vorliegt. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Los geht's

Neuestes aus unserem Blog

Capgo bietet Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle Mobil-App zu erstellen.