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-Aktionen in 5 Minuten einrichten (2024)

Artikelcredits

Martin Donadieu

Autor

Valeria

Rezensent

Jordan

Redakteur

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 zur Erstellung von nativen Capacitor-Bauten. Dieser Fastlane-Leitfaden wird für Teams aufrechterhalten, die bestehende GitHub-Actions-Pipelines weiterhin unterhalten, aber neue iOS-Bauten sollten die Capgo CLI verwenden, damit Sie keine Fastlane, Xcode-Runner, Zertifikate, Berechtigungen und Upload-Skripte selbst unterhalten müssen.

Capgo Build für CI/CD von Capgo

Vermeiden Sie die Wartung von Fastlane, Xcode-Runner, Zertifikaten, Berechtigungen, Provisioning-Profilen und Upload-Skripten. Capgo Build führt signierte native iOS-Bauten von Ihrem bestehenden CI/CD-Pipeline aus:

  • Arbeitet mit Ihrer Pipeline: Aktivieren Sie Capgo Build von GitHub Actions, GitLab CI, Jenkins oder lokalen Skripten nach Ihrem Web-Bau und npx cap sync.
  • Zertifizierung aus CI-Secrets: Halten Sie App Store Connect-Schlüssel, Zertifikate, Provisionierungsprofile, Passwörter und Team-IDs in Ihren eigenen CI-Secrets.
  • Keine native Runner-Vermögensverwaltung: Capgo Build stellt Ihnen ein gepflegtes Apple-Build-Umgebung zur Verfügung, sodass Sie keine macOS-Runner, Xcode-Bilder oder Fastlane-Linien verwalten müssen.
  • Artikel und Einreichung: Laden Sie signierte Artikel für QA herunter oder übermitteln Sie Release-Builds über den 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 Krediten abgerechnet

: Capgo Build in CI/CD einrichten

: Manuelle Einrichtungsanleitung

Hier ist, was Sie tun müssen:

Continuous Delivery für iOS mit Fastlane und GitHub Aktionen und Zertifikat

Voraussetzungen

Bevor Sie mit dem Tutorial fortfahren:

  • 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 Aktion

https://__CAPGO_KEEP_0__.com/features/actionsfrei bis zur Grenze, abhängig von der gewählten Maschine.
Wir werden eine macOS Maschine verwenden, Sie können im Screenshot ihren Preis und Grenzen (Preise Stand der Erstellung des Tutorials, sie könnten sich in Zukunft ändern) sehen.

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

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

Was werden Sie in dem Tutorial lernen?

Schritte, die Sie im Beitrag befolgen müssen.

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

1. Verwenden Sie App Store Connect API mit Fastlane

Ab Februar 2021 ist für alle Benutzer eine zweifaktorale 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

Um sicherzustellen, dass Fastlane App Store Connect API verwenden kann, um Ihre App hochzuladen, müssen Sie die folgenden drei Dinge bereitstellen:

  1. Aussteller-ID
  2. Schlüssel-ID
  3. Schlüsseldatei oder Schlüsselinhalt

Erwerb eines App Store Connect API-Schlüssels

Um Schlüssel zu generieren, müssen Sie in App Store Connect die Administratorrechte haben. Wenn Sie diese Berechtigung nicht haben, können Sie den relevanten Personen diesen Artikel empfehlen.

  1. Anmeldung bei App Store Connect.

  2. Wählen Sie Benutzer und Zugriff.

Zugriff auf App Store Connect

3 — Wählen Sie die Integrationsoption.

App Store Connect API-Integration

  1. Klicken Sie auf Erstellen von 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 Benutzerrechte. Wir empfehlen, die Rolle App-Manager.

  1. Klicken Sie auf Generieren.

Eine API-Schlüssel-Zugriff kann nicht auf bestimmte Apps beschränkt werden.

Der neue Schlüsselname, die Schlüssel-ID, ein Download-Link und weitere Informationen erscheinen auf der Seite.

App Store Connect Schlüssel herunterladen

Sie können hier alle drei notwendigen Informationen abrufen.
<1> Issue-ID. (APPLE_ISSUER_ID Geheim)
<2> Schlüssel-ID. (APPLE_KEY_ID Geheim)
<3> Klicken Sie auf „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.

🔴 Sichern 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_keySie 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

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

2. Zertifikate

Öffnen Sie XCode und gehen Sie zu Einstellungen > Konten > Apple-ID > Teams und wählen Sie Ihr Team.

Code-Signierungsidentitäten

Klicken Sie auf Zertifikate verwalten.

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

Klicken Sie auf + und wählen Sie Apple Distribution

Apple Distribution

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

Dazu müssen Sie zum Schlüsselkasten gehen, auf den Benutzerkasten wechseln und dann auf die Registerkarte My Zertifikate.

My Zertifikate

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 .p12 Datei herunterladen.

Bitte öffnen Sie die Datei in einem Terminal und verwenden Sie den folgenden Befehl, um sie in Base64 umzuwandeln:

base64 -i BUILD_CERTIFICATE.p12 | pbcopy

Dies wird Ihr BUILD_CERTIFICATE_BASE64 Geheimnis. Es wird auch nachgefragt, geben Sie bitte das Passwort des Zertifikats an. Dieses Passwort wird Ihr P12_PASSWORD Geheim.

3. Provisionierungsprofile

Öffnen Apple Developer und wählen Sie das richtige Team.

Dann erstellen Sie ein neues Profil, indem Sie auf +

Erstellen Sie ein neues Profil

Und wählen Sie App Store Connect.

Wählen Sie App Store Connect

Dann müssen Sie das richtige App auswählen, seien Sie vorsichtig, Sie können keine Wildcard verwenden, sonst wird das Signieren fehlschlagen.

Wählen Sie die richtige App

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

Wählen Sie das richtige Zertifikat

Schließlich geben Sie den Namen des Profils an und klicken Sie auf Erstellen.

Der Name wird zum Identifizieren des Profils in Fastlane verwendet, unter der Werte von APPLE_PROFILE_NAME.

Erstellen Sie 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 im mobilen Entwicklungsprozess 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 den Zweck 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 dorthin ein:

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

Dies ist auf derselben Ebene wie package.json, capacitor.config.*, und das ios/ Ordner. Erstellen Sie 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 verwenden die Repository-Geheimnisse, 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 das Fastfile. Kommiteere diese Datei nicht. Füge hinzu fastlane/.env zu deiner ersten (oder überprüfe, ob sie bereits ignoriert ist). Hier ist ein Beispiel: .gitignore APP_STORE_CONNECT_TEAM_ID erhalten

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=

Gehe zu

Entwickler-Zentrum und scroll nach unten zur Sektion. Die Membership details ist der Wert, den du in dem Team ID Geheimnis setzen musst. APP_STORE_CONNECT_TEAM_ID app-store-connect-team-id

BUNDLE_IDENTIFIER erhalten

to your first (or verify it is already ignored). Here is an example: Getting the APP_STORE_CONNECT_TEAM_ID Go to Developer Center and scroll down to section. The is the value you need to set in the secret. app-store-connect-team-id Getting the BUNDLE_IDENTIFIER

  1. Öffnen Sie Xcode
  2. Doppelklicken Sie auf das App in dem Projekt-Explorer
  3. Dann klicken Sie 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. Buildverarbeitung

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 bearbeitet werden kann. 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 bearbeitet 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 skip_waiting_for_build_processing zum trueDies spart Build-Minuten, indem Sie nicht auf die Verarbeitung 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 die Build an die Benutzer verteilen können.

Diese Optimierung ist vor allem für private Projekte nützlich, bei denen Build-Minuten Geld kosten. Für öffentliche/ungekostete Projekte sind die Build-Minuten kostenlos, daher ist es nicht notwendig, diese Einstellung zu aktivieren. Siehe GitHub’s Pricing-Seite 7. Einrichten von __CAPGO_KEEP_0__ Actions

Konfigurieren Sie GitHub Geheimnisse

Configure GitHub secrets

Bitte kopieren Sie die Geheimnisse aus dem .env Datei und fügen Sie sie in die GitHub-Repository-Geheimnisse ein.

Gehe zu Einstellungen &gt; Geheimnisse und Variablen &gt; Aktionen &gt; Neue Repository-Geheimnis

github-geheimnisse

2. BUILD_CERTIFICATE_BASE64 - Zertifikat im Base64-Format.

3. BUILD_PROVISION_PROFILE_BASE64 - Base64 codierte Provisionierungsprofil.

4. BUNDLE_IDENTIFIER - Ihre App-Identifikationsnummer.

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 🔺Inhalt des Schlüssels. .p8, prüfen Sie es

8. Konfigurieren Sie das GitHub Workflow-File

Erstellen Sie ein GitHub Workflow-Verzeichnis.

cd .github/workflows

Im Verzeichnis erstellen Sie eine Datei mit dem Namen workflow und fügen Sie folgendes hinzu. build-upload-ios.ymlcheck it

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

Diese Workflow sollte nach jedem GitHub ausgelöst werden. EtikettTag Automatic build and release with GitHub actions Automatischer Build und Release mit __CAPGO_KEEP_0__ Aktionen

zuerst.

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

Your App doesn’t need to use Ionic, only Capacitor base is mandatory., it can have old Cordova module, but Capacitor JS plugin should be preferred.

Ihre App muss nicht unbedingt Ionic verwenden, nur die __CAPGO_KEEP_0__-Basis ist erforderlich. Sie kann alte Cordova-Module haben, aber die __CAPGO_KEEP_1__-JS-Plugin wird bevorzugt.

8. Auslösen Sie den Workflow

Erstellen Sie einen Commit Machen Sie einen CommitSie sollten das aktive Workflow in Ihrem Repository sehen.

Workflow auslösen

Pushen Sie die neuen Commits in die Zweig main oder development Kann ich von meinem lokalen Computer bereitstellen?

Ja, das können Sie, und es ist einfach.

Sie können Xcode verwenden, um Ihre App zu erstellen und zu signieren, wie immer.

Zugehörige Artikel

Sie können sehen, dass der Workflow aktiv ist, sobald Sie die Änderungen in Ihrem Repository pushen.

Der Workflow auslösen, indem Sie die Änderungen in Ihrem Repository pushen.

oder

CI/CD-Einrichtungsanleitungen

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 Die automatische Capacitor IOS-Build mit GitHub Aktionen mit Zertifikat um die CI/CD-Automatisierung zu planen, verbinden Sie es mit Capgo CI/CD im Produktworkflow in Capgo CI/CD Capgo Native Builds im Produktworkflow in Capgo Native Builds Capgo Integrations im 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

Wenn ein Bug im Weblayer lebt, liefern Sie die Reparatur über Capgo anstatt Tage für die Genehmigung des App-Store abzuwarten. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben.

Menschliche Unterstützung von Martin

Loslegen

Neueste von unserem Blog

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