Zum Hauptinhalt springen
CI/CD

Automatischer Capacitor IOS-Build mit GitHub-Aktionen mit Zertifikat

Wie Sie eine CI/CD-Pipeline für Ihre IOS-Ionic-App mit fastlane und GitHub Actions in 5 Minuten (2024) einrichten

Martin Donadieu

Martin Donadieu

Inhaltsmarketer

Automatischer Capacitor IOS-Build mit GitHub-Aktionen mit Zertifikat

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-Bauten. Diese Anleitung zu Fastlane wird für Teams aufrechterhalten, die bestehende GitHub-Actions-Pipelines weiterhin unterhalten, aber neue iOS-Bauten sollten die Capgo CLI verwenden, damit Sie Fastlane, Xcode-Runner, Zertifikate und Upload-Skripte nicht selbst pflegen müssen.

Capgo-Bau für CI/CD durch Capgo

Vermeiden Sie die Pflege von Fastlane, Xcode-Runner, Zertifikaten, Berechtigungsprofilen und Upload-Skripten. Capgo-Bau __CAPGO_KEEP_0__-Bau führt signierte native iOS-Bauten aus Ihrem bestehenden CI/CD-Pipeline aus:

  • Funktioniert mit Ihrer Pipeline: Auslösen Sie Capgo-Bau von GitHub-Actions, GitLab CI, Jenkins oder lokalen Skripten nach Ihrem Web-Bau und npx cap sync.
  • Signieren von CI-Secrets: Halten Sie App Store Connect-Schlüssel, Zertifikate, Berechtigungsprofile, Passwörter und Team-IDs in Ihren eigenen CI-Secrets.
  • Keine native Runner-Pflege: Capgo-Bau bietet gepflegte Apple-Build-Umgebungen, sodass Sie macOS-Runner, Xcode-Bilder oder Fastlane-Linien nicht selbst verwalten müssen.
  • Kunstwerke und Einreichung: Herunterladen von signierten Artefakten für die QA oder Einreichen von Release-Builds über den Capgo CLI.

Pricing

  • Capgo plans start at $12/month
  • __CAPGO_KEEP_0__-Pläne beginnen bei 12 $/Monat
  • Umfasst OTA-Updates und etwa 15 native Builds pro Monat

Set up Capgo Build in CI/CD

Einrichten von __CAPGO_KEEP_0__ Build in CI/CD

Manueller Setup-Leitfaden

Continuous Delivery for iOS using Fastlane and GitHub Actions and certificate

Fortlaufende Lieferung für iOS mit Fastlane und __CAPGO_KEEP_0__-Aktionen und Zertifikat

Voraussetzungen vorherigen Schritts

  • Stellen Sie sicher, dass Sie Fastlane installiert haben
  • auf Ihrem Entwicklungsrechner.

Stellen Sie sicher, dass Sie Mitglied des iOS-Entwicklerprogramms sind.

Price GitHub Action

Preis github Action

https://__CAPGO_KEEP_0__.com/features/actionsDer Service ist ‘ kostenlos’
bis zur Grenze, je nach gewähltem Rechner. Wir werden ein Sie können in dem Screenshot den Preis und die Grenzen (Preise zum Zeitpunkt der Erstellung dieses Tutorials, sie könnten sich in Zukunft ändern) sehen.

Nachdem Sie über Anforderungen und Preise informiert wurden, können wir fortfahren.

Hinweis: In diesem Beitrag gehe ich davon aus, dass Sie bereits eine App in App Store Connect erstellt haben. Die wichtigen Informationen werden von Fastlane kopiert!

Was werden Sie in diesem Tutorial lernen?

Schritte, die Sie in diesem Beitrag befolgen müssen.

  1. Verwendung von App Store Connect API mit Fastlane.
    • Anforderungen:
      • Erstellung eines App Store Connect API-Schlüssels.
      • Verwendung eines App Store Connect API-Schlüssels.
  2. Kopieren von Fastlane-Dateien.
  3. Konfigurieren von GitHub-Aktionen.

1. Verwendung von App Store Connect API mit Fastlane.

Ab Februar 2021 ist für alle Benutzer eine zweifaktorische Authentifizierung oder eine zweistufige Überprüfung erforderlich, um sich bei App Store Connect anzumelden. Diese zusätzliche Sicherheitsschicht für Ihren Apple-ID hilft sicherzustellen, dass Sie der einzige Person sind, die Zugriff auf Ihr Konto hat.
Von Apple-Support

Anforderungen

Damit Fastlane App Store Connect API verwenden kann, um Ihre App hochzuladen, müssen Sie die folgenden drei Dinge

  1. Aussteller-ID
  2. Zertifikats-ID
  3. Zertifikat oder Zertifikatsinhalt

Erwerb einer App Store Connect API-Zertifikats-ID

Um Zertifikate zu generieren, müssen Sie Admin-Berechtigungen in App Store Connect haben. Wenn Sie diese Berechtigung nicht haben, können Sie die entsprechende Person auf diesen Artikel hinweisen.

  1. Anmelden bei App Store Connect.

  2. Wählen Sie Benutzer und Zugriff.

Zugriff auf App Store Connect-Benutzer

3 — Wählen Sie die Integrationsoption.

App Store Connect API-Integration

  1. Klicken Sie auf Erstellen API-Schlüssel oder auf die Schaltfläche (+).

App Store Connect API-Schlüssel erstellen

  1. Eingeben Sie einen Namen für den Schlüssel. Der Name dient nur Ihrer Referenz und ist nicht Teil des Schlüssels selbst.

App Store Connect API-Schlüssel erstellen: Name

6 — Unter Zugriff wählen Sie die Rolle für den Schlüssel aus. Die Rollen, die auf Schlüssel angewendet werden, sind dieselben Rollen, die auf Benutzer auf Ihrem Team angewendet werden. Siehe RollenberechtigungenWir empfehlen Ihnen, App-Manager.

  1. Klicken Sie auf Erstellen.

Ein Schlüssel von API kann nicht auf bestimmte Apps beschränkt werden.

Die Informationen zum neuen Schlüssel, Schlüssel-ID, ein Download-Link und weitere Details erscheinen auf der Seite.

App Store Connect-Download-Schlüssel

Hier können Sie alle drei notwendigen Informationen finden.
<1> Issue-ID. (APPLE_ISSUER_ID Geheim)
<2> Schlüssel-ID. (APPLE_KEY_ID Geheim)
Klicken Sie auf <3> ‘Download API Schlüssel’ zum Herunterladen Ihres API privaten Schlüssels. Der Download-Link erscheint nur, wenn der private Schlüssel noch nicht heruntergeladen wurde. Apple hält keinen Kopie des privaten Schlüssels. Daher können Sie ihn nur einmal herunterladen.

🔴 Speichern Sie Ihren privaten Schlüssel an einem sicheren Ort. Sie sollten Ihre Schlüssel niemals teilen, Schlüssel in einem code Repository speichern oder Schlüssel in Client-Seiten code einbeziehen.

Verwendung eines App Store Connect API Schlüssels

Das API Schlüssel-File (p8-Datei, die Sie herunterladen), die Schlüssel-ID und die Aussteller-ID sind erforderlich, um den JWT-Token für die Autorisierung zu erstellen. Es gibt mehrere Möglichkeiten, diese Informationen in Fastlane einzugeben. Ich habe mich dafür entschieden, die neue Aktion von Fastlane zu verwenden app_store_connect_api_key. Sie können andere Möglichkeiten in der Fastlane-Dokumentationerfahren. Ich zeige diese Methode, weil ich sie für die einfachste Möglichkeit halte, mit der meisten CI auszukommen, bei der Sie Umgebungsvariablen setzen können.

Bitte konvertieren Sie die p8-Datei, die Sie heruntergeladen haben, in Base64 und speichern Sie sie als Geheimnis (APPLE_KEY_CONTENT).

base64 -i APPLE_KEY_CONTENT.p8 | pbcopy

Jetzt können wir App Store Connect mit Fastlane über den API Schlüssel verwalten, großartig!

2. Zertifikate

Öffnen Sie XCode und gehen Sie zu Settings > Accounts > Apple ID > Teams und wählen Sie Ihr Team.

Code Signieridentitäten

Klicken Sie auf Zertifikate verwalten.

Wenn Sie noch kein Zertifikat erstellt haben, können Sie ein neues Zertifikat erstellen.

Klicken Sie auf + Wählen Sie und wählen Sie Apple Distribution

Apple Distribution

Dann müssen Sie zum Schlüsselkasten gehen, um das Zertifikat als .p12 Datei herunterzuladen.

Wählen Sie dazu den Schlüsselkasten, wechseln Sie zum Login-Schlüsselkasten und dann zur Registerkarte Login Login Schlüsselkasten.

Schlüsselkasten

Dann können Sie das Zertifikat auswählen, das Sie herunterladen möchten. (Suchen Sie nach dem Datum des Zertifikats)

Und klicken Sie dann mit der rechten Maustaste auf den privaten Schlüssel des Zertifikats und wählen Sie Exportieren.

Wählen Sie die Dateiformat Persönliche Informationen austauschen (.p12).

Das wird das Zertifikat als Datei herunterladen. .p12 Öffnen Sie bitte die Datei in einem Terminal und verwenden Sie den folgenden Befehl, um sie in Base64 umzuwandeln:

Das wird Ihr

base64 -i BUILD_CERTIFICATE.p12 | pbcopy

Geheimnis. Geben Sie auch bitte die Passwort des Zertifikats an, wenn Sie dazu aufgefordert werden. Dieses Passwort wird Ihr BUILD_CERTIFICATE_BASE64 Geheimnis. P12_PASSWORD 3. Provisioning-Profile

Öffnen

Apple-Entwickler Exportieren Wählen Sie das richtige Team.

Klicken Sie dann auf +

Erstellen Sie ein neues Profil

Und wählen Sie App Store Connect wählen.

Wählen Sie App Store Connect

Sie müssen dann das richtige App auswählen, wählen Sie vorsichtig, da Wildcard nicht verwendet werden darf, sonst wird die Signierung fehlschlagen.

Die richtige App wählen

Wählen Sie die richtige Zertifizierung, die Sie vorher erstellt haben (suchen Sie nach dem Datum der Ablaufzeit, es sollte das gleiche Datum und Monat wie heute sein) und klicken Sie auf Fortsetzen.

Wählen Sie die richtige Zertifizierung

Abschließend geben Sie den Namen des Profils ein und klicken Sie auf Erstellen.

Der Name wird verwendet, um das Profil in Fastlane zu identifizieren, unter der Werte von APPLE_PROFILE_NAME.

Erstelle das Profil

Sie können das Profil als .mobileprovision Datei herunterladen.

Herunterladen Sie das Profil

Bitte konvertieren Sie das Profil in Base64 und speichern Sie es als Geheimnis (BUILD_PROVISION_PROFILE_BASE64).

base64 -i BUILD_PROVISION_PROFILE.mobileprovision | pbcopy

4. Kopieren Sie die Fastlane-Dateien

Fastlane ist eine Ruby-Bibliothek, die zum Automatisieren von gängigen Aufgaben der mobilen Entwicklung erstellt wurde. Mit Fastlane können Sie benutzerdefinierte „Bahnen“ konfigurieren, die eine Reihe von „Aktionen“ enthalten, die Aufgaben ausführen, die Sie normalerweise mit Android Studio durchführen würden. Mit Fastlane können Sie viel erreichen, aber für die Zwecke dieses Tutorials werden wir nur eine Handvoll grundlegender Aktionen verwenden.

Erstellen Sie das Fastlane-Verzeichnis am Root Ihres Capacitor/Ionic-Projekts und fügen Sie das Fastfile dort hin:

  • Ordner: <project-root>/fastlane/
  • Datei: <project-root>/fastlane/Fastfile

Dies ist auf der gleichen Ebene wie package.json, capacitor.config.*, und das ios/ Verzeichnis. Erstelle es nicht innerhalb von ios/App/.

platform :ios do
  desc 'Export ipa and submit to TestFlight'
  lane :beta do
    keychain_info = { keychain_name: "ios-build-#{Time.now.to_i}.keychain", keychain_password: SecureRandom.uuid }
    
    begin
      setup_signing(keychain_info)
      bump_build_number
      build_app_with_signing(keychain_info)
      submit_to_testflight
    ensure
      cleanup_keychain(keychain_info)
    end
  end

  private_lane :setup_signing do |options|
    create_keychain(
      name: options[:keychain_name],
      password: options[:keychain_password],
      unlock: true,
      timeout: 0,
      lock_when_sleeps: false, 
      add_to_search_list: true
    )
    import_cert(options)
    install_profile
    update_project_settings
  end

  lane :bump_build_number do
		file = File.read('../package.json')
		data_hash = JSON.parse(file)
		api_key = app_store_connect_api_key(
      key_id: ENV['APPLE_KEY_ID'],
      issuer_id: ENV['APPLE_ISSUER_ID'],
      key_content: ENV['APPLE_KEY_CONTENT'],
      is_key_content_base64: true,
      duration: 1200,
      in_house: false
    )
		build_num = app_store_build_number(
      api_key: api_key,
			app_identifier: ENV['BUNDLE_IDENTIFIER'],
			live: false
    )
		build_num = build_num + 1
		UI.message("Bumped build number to #{build_num}")
		increment_build_number(
			build_number: build_num,
			xcodeproj: "./ios/App/App.xcodeproj",
			skip_info_plist: true
		)
	end

  private_lane :import_cert do |options|
    cert_path = "#{Dir.tmpdir}/build_certificate.p12"
    File.write(cert_path, Base64.decode64(ENV['BUILD_CERTIFICATE_BASE64']))
    import_certificate(
      certificate_path: cert_path,
      certificate_password: ENV['P12_PASSWORD'] || "",
      keychain_name: options[:keychain_name],
      keychain_password: options[:keychain_password],
      log_output: true
    )
    File.delete(cert_path)
  end  
  
  private_lane :cleanup_keychain do |options|
    delete_keychain(
      name: options[:keychain_name]
    )
  end  

  private_lane :install_profile do
    profile_path = "#{Dir.tmpdir}/build_pp.mobileprovision"
    File.write(profile_path, Base64.decode64(ENV['BUILD_PROVISION_PROFILE_BASE64']))
    UI.user_error!("Failed to create provisioning profile at #{profile_path}") unless File.exist?(profile_path)
    ENV['PROVISIONING_PROFILE_PATH'] = profile_path
    install_provisioning_profile(path: profile_path)
    File.delete(profile_path)
  end

  private_lane :update_project_settings do
    update_code_signing_settings(
      use_automatic_signing: false,
      path: "./ios/App/App.xcodeproj",
      code_sign_identity: "iPhone Distribution",
      profile_name: ENV['APPLE_PROFILE_NAME'],
      bundle_identifier: ENV['BUNDLE_IDENTIFIER'],
      team_id: ENV['APP_STORE_CONNECT_TEAM_ID']
    )
    update_project_team(
      path: "./ios/App/App.xcodeproj",
      teamid: ENV['APP_STORE_CONNECT_TEAM_ID']
    )
  end

  private_lane :build_app_with_signing do |options|
    unlock_keychain(
      path: options[:keychain_name],
      password: options[:keychain_password],
      set_default: false
    )
    build_app(
      workspace: "./ios/App/App.xcworkspace",
      scheme: "App",
      configuration: "Release",
      export_method: "app-store",
      output_name: "App.ipa",
      export_options: {
        provisioningProfiles: {
          ENV['BUNDLE_IDENTIFIER'] => ENV['APPLE_PROFILE_NAME']
        }
      },
      xcargs: "-verbose",
      buildlog_path: "./build_logs",
      export_xcargs: "-allowProvisioningUpdates",
    )
  end   

  private_lane :submit_to_testflight do
    api_key = app_store_connect_api_key(
      key_id: ENV['APPLE_KEY_ID'],
      issuer_id: ENV['APPLE_ISSUER_ID'],
      key_content: ENV['APPLE_KEY_CONTENT'],
      is_key_content_base64: true,
      duration: 1200,
      in_house: false
    )
    pilot(
      api_key: api_key,
      skip_waiting_for_build_processing: true,
      skip_submission: true,
      distribute_external: false,
      notify_external_testers: false,
      ipa: "./App.ipa"
    )
  end
end

5. Die Einrichtung von Geheimnissen

GitHub Actions verwendet die Repository-Secrets, die Sie in der nächsten Schritt einrichten. Sie benötigen nur eine lokale .env Datei, wenn Sie Fastlane von Ihrem eigenen Computer aus ausführen oder testen möchten.

Für lokale Tests erstellen Sie <project-root>/fastlane/.env nächstens dem FastfileVerzeichnis. Erstelle es nicht in der Commits-Liste. Füge fastlane/.env zu deinem .gitignore ersten (oder überprüfe, ob es bereits ignoriert wird). Hier ist ein Beispiel:

APP_STORE_CONNECT_TEAM_ID=UVTJ336J2D
BUNDLE_IDENTIFIER=ee.forgr.testfastlane
# See previous section for these secrets
BUILD_CERTIFICATE_BASE64=
BUILD_PROVISION_PROFILE_BASE64=
APPLE_KEY_ID=
APPLE_ISSUER_ID=
APPLE_KEY_CONTENT=
P12_PASSWORD=
APPLE_PROFILE_NAME=

Ermittlung des APP_STORE_CONNECT_TEAM_ID

Gehe zu Entwickler-Zentrum und scrollen Sie nach unten bis zur Membership details Sektion. Team ID ist der Wert, den Sie in der APP_STORE_CONNECT_TEAM_ID Geheimzahl einstellen müssen.

app-store-connect-team-id

Erhalten Sie die BUNDLE_IDENTIFIER

  1. Öffnen Sie Xcode
  2. Doppelklicken Sie auf das App in dem Projektnavigator
  3. Klicken Sie dann auf die Registerkarte Signing and Capabilities
  4. Kopieren Sie den Wert von dem Bundle identifier. Dies ist der Wert, den Sie in dem BUNDLE_IDENTIFIER Geheimnis einstellen müssen.
bundle-identifier-xcode

6. Verarbeitung von Aufgaben

In GitHub Aktionen, Sie werden auf die Minuten abgerechnet, die Sie für die Ausführung Ihres CI/CD-Workflows verwendet haben. Aus meiner Erfahrung dauert es etwa 10–15 Minuten, bevor ein Build in App Store Connect verarbeitet werden kann. Für private Projekte kann die geschätzte Kosten pro Build bis zu

$0,08/min x 15 min = $1,2 , oder mehr, je nach Konfiguration und Abhängigkeiten Ihres Projekts.Wenn Sie sich um die Kosten für private Projekte Sorgen, können Sie

If you’re concerned about costs for private projects, you can set skip_waiting_for_build_processing zur trueDies spart Buildminuten, indem Sie nicht auf die Verarbeitung des Builds durch App Store Connect warten müssen.

Es gibt jedoch einen Kompromiss - Sie müssen die Compliance-Informationen Ihres Apps in App Store Connect manuell aktualisieren, bevor Sie den Build an Benutzer verteilen können.

Dieses Optimierungsfeature ist hauptsächlich für private Projekte nützlich, bei denen Buildminuten Geld kosten. Bei öffentlichen/ kostenlosen Projekten sind die Buildminuten kostenlos, daher ist es nicht notwendig, diese Einstellung zu aktivieren. Siehe die GitHub-Preisliste mehr Details 7. __CAPGO_KEEP_0__-Einrichtung

Konfigurieren Sie GitHub-Geheimnisse

Configure GitHub secrets

Datei kopieren und in die __CAPGO_KEEP_0__-Repository-Geheimnisse einfügen. .env file and paste them into the GitHub repository secrets.

Einstellungen __CAPGO_KEEP_0__-Aktionen &gt; Geheimnisse und Variablen &gt; Aktionen &gt; Neuer Repository-Secret

github-geheimnisse

2. BUILD_CERTIFICATE_BASE64 - Eine zertifizierte Base64-Datei.

3. BUILD_PROVISION_PROFILE_BASE64 - Eine Base64-gekodierte Provisioning-Profil.

4. BUNDLE_IDENTIFIER - Die Bundle-Identifikation Ihres Apps.

5. APPLE_KEY_ID — App Store Connect API-Schlüssel 🔺Schlüssel-ID.

6. APPLE_ISSUER_ID — App Store Connect API-Schlüssel 🔺Aussteller-ID.

7. APPLE_KEY_CONTENT — App Store Connect API Schlüssel 🔺 Schlüsselinhalt .p8, Überprüfen Sie es

8. Konfigurieren Sie GitHub Arbeitsflussdatei

Erstellen Sie einen GitHub Arbeitsflussverzeichnis.

cd .github/workflows

Innerhalb des workflow Ordners erstellen Sie eine Datei mit dem Namen build-upload-ios.ymlund fügen Sie folgendes hinzu.

name: Build source code on ios

on:
  push:
    tags:
      - '*'

jobs:
  build_ios:
    runs-on: macOS-latest
    steps:
      - uses: actions/checkout@v6
      - name: Set Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: npm
      - name: Install dependencies
        id: install_code
        run: npm ci
      - name: Build
        id: build_code
        run: npm run build
      - uses: actions/cache@v5
        with:
          path: ios/App/Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-
      - name: Sync
        id: sync_code
        run: npx cap sync
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.0'
          bundler-cache: true
      - uses: maierj/fastlane-action@v3.1.0
        env:
          APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }}
          BUNDLE_IDENTIFIER: ${{ secrets.BUNDLE_IDENTIFIER }}
          BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
          BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
          APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
          APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
          APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
          P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
          APPLE_PROFILE_NAME: ${{ secrets.APPLE_PROFILE_NAME }}
        with:
          lane: ios beta
      - name: Upload release bundle
        uses: actions/upload-artifact@v6
        with:
          name: ios-release
          path: ./App.ipa
          retention-days: 10

Dieser Arbeitsfluss sollte nach jedem GitHub Tag, wenn Sie die automatisierte Tag-Verarbeitung benötigen, beziehen Sie sich auf Automatisches Build und Release mit GitHub Aktionen erstens.

Dann wird diese Workflow-Instanz Ihre NodeJS-Abhängigkeiten ziehen, sie installieren und Ihre JavaScript-Anwendung bauen.

Jedes Mal, wenn Sie einen neuen Commit senden, wird in TestFlight eine Release erstellt.

Die App benötigt nicht unbedingt Ionic, nur die Capacitor-Basis ist erforderlich. Sie kann alte Cordova-Module haben, aber das Capacitor-JS-Plugin wird bevorzugt.

8. Auslösen Sie die Workflow-Instanz

Erstellen Sie einen Commit

Erstellen Sie einen Commit, Sie sollten die aktive Workflow-Instanz im Repository sehen.

Auslösen Sie die Workflow-Instanz

Pushen Sie die neuen Commits in die Zweig main oder development um den Workflow auszulösen.

Mit Commit begonnen.

Nach wenigen Minuten sollte das Build in Ihrem App Store Connect-Dashboard verfügbar sein.

Testflight-Dashboard

9. Kann ich von der lokalen Maschine bereitstellen?

Ja, das kannst du, und es ist einfach.

Du kannst Xcode verwenden, um deine App zu bauen und zu signieren, wie immer.

CI/CD-Einrichtungsleitfäden

Alternative CI/CD-Plattformen

Live-Updates &amp; Bereitstellung

- Danke

- Dieser Blog basiert auf den folgenden Artikeln:

- Fortsetzen Sie mit der automatischen Capacitor-IOS-Build mit GitHub-Aktionen mit Zertifikat

- Wenn Sie __CAPGO_KEEP_0__ verwenden - Automatische Capacitor-IOS-Build mit GitHub-Aktionen mit Zertifikat um die CI/CD-Automatisierung zu planen, verbinden Sie sie mit Capgo CI/CD zur Produktworkflow in Capgo CI/CD Capgo Native Builds zur Produktworkflow in Capgo Native Builds Capgo Integrations zur Produktworkflow in Capgo Integrations CI/CD-Integration zur Implementierungsdetail in CI/CD-Integration, und GitHub Actions-Integration zur Implementierungsdetail in GitHub Actions-Integration

Live-Updates für Capacitor-Apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Wenn ein Bug im Web-Schicht lebt, liefern Sie die Reparatur über __CAPGO_KEEP_0__ anstatt Tage zu warten, bis die App-Store-Zulassung genehmigt ist. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben. Kontext: Capgo-Marketing-Website. Rolle: Unterstützende Beschreibung oder Meta-Beschreibung. Gesehen in: Komponente GetStarted.astro. Capgo-Produkt- und -Markenbegriffe sowie Entwicklertrems genau beibehalten. Nachrichtenschlüssel `instant_updates_for_capacitor_apps_beschreibung` (Instant Updates For Capacitor Apps Beschreibung).

Los geht's jetzt

Neueste von unserem Blog

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