Zum Hauptinhalt springen
CI/CD

Automatische Capacitor-Android-Build mit GitHub-Aktionen

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

Martin Donadieu

Martin Donadieu

Content-Marketing-Spezialist

Automatische Capacitor-Android-Build mit GitHub-Aktionen

Die Einrichtung von CI/CD für Capacitor-Apps 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 für native Capacitor-Bauwerke. Dieser Leitfaden für Fastlane wird für Teams aufrechterhalten, die bestehende GitHub-Actions-Pipelines weiterhin pflegen, aber neue Android-Bauwerke sollten die Capgo CLI verwenden, damit Sie Fastlane, Gradle-Runner, Keystores und Upload-Skripte nicht selbst pflegen müssen.

Voraussetzungen

Bevor Sie beginnen, müssen Sie Folgendes einrichten:

  • Eine GitHub-Konto mit Administrator-Zugriff
  • Ihr bereits veröffentlichtes App auf dem Google Play Store mit korrekter Signierung
  • Android-Signierungs-Schlüssel und Keystore-Dateien
  • Google Cloud Console-Projekt mit Play Store API aktiviert
  • Dienstkonto mit entsprechenden Berechtigungen
  • Verständnis von GitHub-Actions-Workflows
  • Wissen über Fastlane-Konfiguration
  • Zeit, um den Pipeline zu pflegen und zu debuggen

Capgo für CI/CD durch Capgo erstellen

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

  • Arbeitet mit Ihrer Pipeline zusammen: Capgo Build aus GitHub Actions, GitLab CI, Jenkins oder lokalen Skripten auslösen, nachdem Sie Ihre Web-Build erstellt haben und npx cap sync.
  • Signierung aus CI-Secrets: Android-Keystores, Schlüsselalias, Passwörter und Play-Console-Dienstkonten-JSON in Ihren eigenen CI-Secrets speichern.
  • Keine native Runner-Wartung: Capgo Build stellt Android-Buildumgebungen bereit, sodass Sie keine SDK-Images, Gradle-Cache-Probleme oder Fastlane-Lane-Verwaltung durchführen müssen.
  • Artikel und Einreichung: Signierte Artikel herunterladen, um sie für QA zu überprüfen, oder Release-Builds über die Capgo CLI einreichen.

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 Krediten abgerechnet

Einrichten Sie Capgo Build in CI/CD

Manuelle Einrichtungsanleitung

Hier ist, was Sie tun müssen:

GitHub-Actions-Preise

Preis GitHub-Action

GitHub-Actions bietet kostenlose Minuten auf der Grundlage Ihres Repository-Typs an:

  • Ö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 Einrichtungsschritte

  1. Erstellen Sie einen Android-Keystore
  2. Einrichten Sie ein Google Play Service-Konto
  3. Einrichten Sie Fastlane
  4. Konfigurieren Sie GitHub-Geheimnisse
  5. Erstellen Sie GitHub-Actions-Arbeitsablauf

1. Erstellen Sie einen Android-Keystore

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

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:

  • Sicherheitskasten-PasswortWählen Sie ein starkes Passwort (Sie benötigen dies als KEYSTORE_STORE_PASSWORD)
  • SchlüsselpasswortWählen Sie ein starkes 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:

    • Sicherheitskasten-Datei-Ort (z.B. my-release-key.keystore)
    • Schlüsselalias (z.B. my-key-alias)- Sie benötigen dies als KEYSTORE_KEY_ALIAS
    • Sicherheitskasten-Passwort - Sie benötigen dies als KEYSTORE_STORE_PASSWORD
    • Sicherheitspasswort - Sie benötigen es als KEYSTORE_KEY_PASSWORD
  • Sichern Sie das Keystore-File: Wenn Sie es verlieren, können Sie Ihre veröffentlichte App nicht aktualisieren

  • Halten Sie es geheim: Kommitieren Sie das Keystore-File nie in Git

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

Alternative: Verwenden Sie ein bestehendes Keystore

Wenn Sie bereits Ihre App veröffentlicht haben, müssen Sie das gleiche Keystore verwenden, das Sie ursprünglich verwendet haben. Sie können es finden:

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

2. Einrichten Sie Google Play Service-Konto

To ermöglichen, dass GitHub-Aktionen Builds auf Google Play hochladen können, benötigen Sie eine Dienstkontoinstanz.

Schritt 2.1: Erstellen Sie ein Google Cloud-Projekt

  1. Gehe zu Google Cloud Console
  2. Einen neuen Projekt erstellen oder ein bestehendes auswählen
  3. Hinweis: Notieren Sie die Projekt-ID

Schritt 2.2: Aktivieren Sie Google Play-Entwickler API

  1. In Google Cloud Console gehen Sie zu APIs & DiensteBibliothek
  2. Nach „Google Play Android-Entwickler API“ suchen
  3. Auf "Suchen" klicken Aktivieren

Schritt 2.3: Erstellen Sie Dienstkonten

  1. Zum IAM & AdminDienstkonten
  2. Klicken Sie Dienstkont erstellen
  3. Details eingeben:
    • Name: github-actions-uploader
    • Beschreibung: „Dienstkonto für GitHub Aktionen zum Hochladen von Builds“
  4. Klicken Sie Erstellen und fortfahren
  5. Skip die Rolle zuweisen für jetzt (klicken Fortsetzen, dann Fertig)

Schritt 2.4: Erstellen Sie den Service Account-Schlüssel

  1. Klicken Sie auf den neu erstellten Dienstkontoschlüssel
  2. Gehe zu Schlüssel Registerkarte
  3. Klicken Schlüssel hinzufügenNeuen Schlüssel erstellen
  4. Wählen Sie JSON-Format Klicken Sie
  5. Erstellen Ein JSON-Datei wird heruntergeladen -
  6. speichern Sie dies sicher , Sie benötigen es späterSchritt 2.5: Zugriff in Play Console gewähren

Gehe zu

  1. Google Play Console Gehe zu
  2. Capgo EinstellungAPI Zugriff
  3. Unter Dienstkonten, klicken Sie Zugriff gewähren für Ihre Dienstkonto
  4. Bei der Anwendungsrechte Registerkarte, fügen Sie Ihrer Anwendung
  5. Bei der Kontorechte Klicken Sie auf diese Berechtigungen zu erteilen:
    • Anwendungsinformationen anzeigen und große Berichte herunterladen (nur Lesen)
    • Erstellen, bearbeiten und löschen von Entwurfsanwendungen
    • Apps auf Testtracks freigeben
    • Apps auf Produktions-, Ausschluss- und andere Tracks freigeben
  6. Klicken Benutzer einladen
  7. Klicken Einladung senden

Schritt 2.6: JSON-Schlüssel überprüfen

Der 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": "..."
}

Sie werden dies in der GitHub-Geheimnisse-Konfigurationsschritt in Base64 umwandeln.

3. Einrichten von Fastlane

Erstelle einen fastlane Fachordner in deinem Projektroot 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. Konfiguriere GitHub-Geheimnisse

Da du nun deinen Keystore und die JSON-Datei für deinen Serviceaccount hast, musst du sie sicher in GitHub speichern.

Schritt 4.1: Zugriff auf GitHub-Geheimnisse

  1. Gehe zu deinem Repository auf GitHub
  2. Klicke EinstellungenGeheimnisse und VariablenAktionen
  3. Klicken Sie Neuer Repository-Schlüssel

Schritt 4.2: Fügen Sie erforderliche Geheimnisse hinzu

Fügen Sie jedes dieser Geheimnisse einzeln hinzu:

PLAY_CONFIG_JSON

  1. Holen Sie sich das JSON-Datei des Dienstkontos, das Sie in Schritt 2.4 heruntergeladen haben
  2. Konvertieren Sie es in Base64:

Unter macOS/Linux:

base64 service_account_key.json | pbcopy

Unter Windows (PowerShell):

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

ANDROID_KEYSTORE_FILE

  1. Convert your keystore to 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. Erstelle ein neues Geheimnis mit dem Namen ANDROID_KEYSTORE_FILE und füge den base64-String ein

KEYSTORE_KEY_ALIAS

Erstelle ein neues Geheimnis mit dem Alias, den du verwendet hast, wenn du den Keystore generiert hast (z.B. my-key-alias)

KEYSTORE_KEY_PASSWORD

Erstelle ein neues Geheimnis mit dem Passwort für die Schlüssel, das du gesetzt hast, wenn du den Keystore generiert hast

KEYSTORE_STORE_PASSWORD

Erstelle ein neues Geheimnis mit dem Passwort für den Keystore, das du gesetzt hast, wenn du den Keystore generiert hast

DEVELOPER_PACKAGE_NAME

Einen neuen geheimen Schlüssel mit dem Paketnamen Ihres Apps erstellen (z.B., com.example.app)

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

Schritt 4.3: Alle Geheimnisse überprüfen

Stellen Sie sicher, dass diese 6 Geheimnisse konfiguriert sind:

  • ✅ PLAY_CONFIG_JSON
  • ✅ ANDROID_KEYSTORE_FILE
  • ✅ KEYSTORE_KEY_ALIAS
  • ✅ KEYSTORE_KEY_PASSWORD
  • ✅ KEYSTORE_STORE_PASSWORD
  • ✅ ENTWICKLER_PAKETNAME

5. Erstellen Sie 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. Erstellen Sie einen Git-Tag, um den Workflow auszulösen
  2. GitHub Aktionen baut Ihr App
  3. Fastlane lädt es in den Google Play Beta-Kanal hoch
  4. Ihre App wird automatisch aktualisiert

Buildzeit und Kosten

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

CI/CD-Setup-Leitfäden

Alternative CI/CD-Plattformen

Live-Updates und -Deployment

Ressourcen

Machen Sie weiter mit der automatischen Capacitor Android-Build mit GitHub Aktionen

Wenn Sie Automatische Capacitor Android-Build mit GitHub Aktionen für die Planung der CI/CD-Automatisierung verwenden, verbinden Sie sie 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, und GitHub Actions-Integration für die Implementierungsdetails in GitHub Actions-Integration.

Live-Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, versenden 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 jetzt

Neuestes aus unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle mobile App zu erstellen.