Zum Hauptinhalt springen
CI/CD

Automatischer Capacitor IOS-Build mit GitHub Aktionen mithilfe von match

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

Martin Donadieu

Martin Donadieu

Inhaltsmarketer

Automatische Capacitor IOS-Builds mit GitHub Aktionen mithilfe von Match

Automatische iOS-Builds mit GitHub Aktionen mithilfe von Match

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 dem Capgo CLI für native Capacitor-Builds. Diese Fastlane-Match-Anleitung wird für Teams beibehalten, die bestehende GitHub-Actions-Pipelines weiterhin unterhalten, aber neue iOS-Builds sollten die Capgo CLI verwenden, damit Sie keine Fastlane, Match-Repository, Xcode-Runner, Zertifikate und Upload-Skripte selbst pflegen müssen.

Voraussetzungen

Bevor Sie beginnen, müssen Sie Folgendes einrichten:

  • Ein GitHub-Konto mit Administrator-Zugriff
  • Mitgliedschaft im iOS-Entwicklerprogramm
  • Zugriff auf App Store Connect API mit angemessenen Berechtigungen
  • Verständnis von GitHub-Actions-Workflows
  • Kenntnisse in der Konfiguration von Fastlane und Match
  • Zeit zur Wartung und Fehlersuche im Pipeline
  • Ein Team aus vielen Entwicklern, andernfalls empfehlen wir die Verwendung von fastlane cert für einfache Workflows

Professionelle CI/CD-Einrichtung durch Capgo

Die Komplexität überspringen. Capgo Konfiguriert Ihre CI/CD-Pipeline direkt in Ihrer bevorzugten Plattform:

  • Plattformunabhängigkeit: Funktioniert mit GitHub Actions, GitLab CI oder anderen
  • Einfache Integration: Keine Plattformwechsel erforderlich, funktioniert mit Ihrem aktuellen Prozess
  • Angepasste Konfiguration: Benutzerdefinierte Einrichtung, die den Bedürfnissen Ihres Projekts entspricht
  • Experte Beratung: Wir haben bereits CI/CD für 50+ Apps eingerichtet

Preise

  • Einmaliger Einrichtungsbetrag: 2.600 $
  • Ihre laufenden Kosten: ~300 $/Jahr
  • Vergleichen Sie es mit anderen proprietären Lösungen: 6.000 €/Jahr
  • Sparen Sie 26.100 € über 5 Jahre

Setup CI/CD Jetzt

Manuelle Setup Anleitung

Wenn Sie immer noch alles selbst einrichten möchten, hier ist, was Sie tun müssen:

Kontinuierliche Lieferung für iOS mit Fastlane und GitHub Aktionen mit match

Voraussetzungen

Bevor Sie mit der Anleitung fortfahren…

  • Stellen Sie sicher, dass Sie Fastlane installiert auf Ihrem Entwicklungsgerät.
  • Mitgliedschaft im iOS-Entwicklerprogramm.
  • Wunsch, etwas zu lesen 😆…
  • Ein Team aus vielen Entwicklern, andernfalls empfehlen wir die Verwendung von fastlane cert für einfache Workflows.

Wichtig zu wissen ist der Preis

Preis GitHub Action

https://github.com/features/actions

Die Dienstleistung ist ‘kostenlos’ bis zur Grenze, abhängig von der gewählten Maschine.
Wir werden ein macOS Gerät verwenden, Sie können es im Screenshot sehen, seinen Preis und Grenzen (Preise zum Zeitpunkt der Erstellung des Tutorials, sie könnten sich in Zukunft ändern)

🔴 Nachdem Sie über Anforderungen und Preise gewarnt wurden, wenn Sie möchten, fahren wir fort…

📣 In der Post nehmen wir an, dass wir das App in iTunes Connect erstellt haben, wir haben die Zertifikate des Apple-Ökosystems, alles wird von Fastlane kopiert!

Los geht's!

Schritte, die im Post zu beachten sind

  1. Verwendung von App Store Connect API mit Fastlane Match
  2. Anforderungen
  3. Erstellung eines App Store Connect API-Schlüssels
  4. Verwendung eines App Store Connect API-Schlüssels
  5. Kopieren von Fastlane-Dateien
  6. Konfiguration von Fastlane Match
  7. Konfiguration von Fastlane Match

1. Verwendung von App Store Connect API mit Fastlane Match

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-Konto hilft sicherzustellen, dass Sie der einzige Person sind, die Zugriff auf Ihr Konto hat.
Von Apple Support

Um mit Match loszulegen, müssen Sie Ihre bestehenden Zertifikate widerrufen. Keine Sorge, Sie erhalten das neue direkt.

Anforderungen

Um App Store Connect API nutzen zu können, benötigt Fastlane drei Dinge.

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

Erstellung einer App Store Connect API-Schlüssel

Um Schlüssel zu generieren, müssen Sie in App Store Connect die Admin-Berechtigung haben. Wenn Sie diese Berechtigung nicht haben, können Sie den relevanten Personen diesen Artikel zukommen lassen und die folgenden Anweisungen befolgen.

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-Integration API

4 — Klicken Sie auf Erstellen von API-Schlüssel oder auf die (+) Taste.

App Store Connect-Schlüssel erstellen API

5 — Geben Sie einem Schlüssel einen Namen. Der Name dient nur Ihrer Referenz und ist nicht Teil des Schlüssels selbst.

App Store Connect-Schlüssel erstellen API-Name

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

7 — Klicken Sie auf Generieren.

Ein API-Schlüssel 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-Download-Schlüssel

Hier können Sie alle drei notwendigen Informationen finden.
<1> Issue-ID.
<2> Schlüssel-ID.
<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.

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

Mit einem App Store Connect API-Schlüssel

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

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

2. Kopieren Sie die Fastlane-Dateien

Fastlane ist eine Ruby-Bibliothek, die entwickelt wurde, um häufige Aufgaben der mobilen Entwicklung zu automatisieren. Mit Fastlane können Sie benutzerdefinierte 'Bahnen' konfigurieren, die eine Reihe von 'Aktionen' enthalten, die Aufgaben ausführen, die Sie normalerweise mit Android Studio ausfü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 einen Fastlane-Ordner am Root Ihres Projekts und kopieren Sie die folgenden Dateien: Fastfile

default_platform(:ios)

DEVELOPER_APP_IDENTIFIER = ENV["DEVELOPER_APP_IDENTIFIER"]
DEVELOPER_APP_ID = ENV["DEVELOPER_APP_ID"]
PROVISIONING_PROFILE_SPECIFIER = ENV["PROVISIONING_PROFILE_SPECIFIER"]
TEMP_KEYCHAIN_USER = ENV["TEMP_KEYCHAIN_USER"]
TEMP_KEYCHAIN_PASSWORD = ENV["TEMP_KEYCHAIN_PASSWORD"]
APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"]
APPLE_KEY_ID = ENV["APPLE_KEY_ID"]
APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"]
GIT_USERNAME = ENV["GIT_USERNAME"]
GIT_TOKEN = ENV["GIT_TOKEN"]

def delete_temp_keychain(name)
  delete_keychain(
    name: name
  ) if File.exist? File.expand_path("~/Library/Keychains/#{name}-db")
end

def create_temp_keychain(name, password)
  create_keychain(
    name: name,
    password: password,
    unlock: false,
    timeout: 0
  )
end

def ensure_temp_keychain(name, password)
  delete_temp_keychain(name)
  create_temp_keychain(name, password)
end

platform :ios do
  lane :build do
    build_app(
      configuration: "Release",
      workspace: "./ios/App/App.xcworkspace",
      scheme: "App",
      export_method: "app-store",
      export_options: {
        provisioningProfiles: { 
            DEVELOPER_APP_ID => "#{PROVISIONING_PROFILE_SPECIFIER}"
        }
      }
    )
  end
  lane :refresh_profiles do
    match(
      type: "development",
      force: true)
    match(
      type: "adhoc",
      force: true)
  end
  desc "Register new device"
  lane :register_new_device do  |options|
      device_name = prompt(text: "Enter the device name: ")
      device_udid = prompt(text: "Enter the device UDID: ")
      device_hash = {}
      device_hash[device_name] = device_udid
      register_devices(
                       devices: device_hash
                       )
    refresh_profiles
  end
  lane :closed_beta do
    keychain_name = TEMP_KEYCHAIN_USER
    keychain_password = TEMP_KEYCHAIN_PASSWORD
    ensure_temp_keychain(keychain_name, keychain_password)

    api_key = app_store_connect_api_key(
      key_id: APPLE_KEY_ID,
      issuer_id: APPLE_ISSUER_ID,
      key_content: APPLE_KEY_CONTENT,            
      duration: 1200,            
      in_house: false
    )

    match(
      type: 'appstore',
      git_basic_authorization: Base64.strict_encode64("#{GIT_USERNAME}:#{GIT_TOKEN}"),
      readonly: true,
      keychain_name: keychain_name,
      keychain_password: keychain_password,
      api_key: api_key
    )

    gym(
      configuration: "Release",
      workspace: "./ios/App/App.xcworkspace",
      scheme: "App",
      export_method: "app-store",
      export_options: {
        provisioningProfiles: { 
            DEVELOPER_APP_ID => "#{PROVISIONING_PROFILE_SPECIFIER}"
        }
      }
    )

    pilot(
      apple_id: "#{DEVELOPER_APP_ID}",
      app_identifier: "#{DEVELOPER_APP_IDENTIFIER}",
      skip_waiting_for_build_processing: true,
      skip_submission: true,
      distribute_external: false,
      notify_external_testers: false,
      ipa: "./App.ipa"
    )

    delete_temp_keychain(keychain_name)
  end
  lane :submit_review do
    version = ''
    Dir.chdir("..") do
      file = File.read("package.json")
      data = JSON.parse(file)
      version = data["version"]
    end
    deliver(
      app_version: version,
      submit_for_review: true,
      automatic_release: true,
      force: true, # Skip HTMl report verification
      skip_metadata: false,
      skip_screenshots: false,
      skip_binary_upload: true
    )
  end
end

Appfile

app_identifier(ENV["DEVELOPER_APP_IDENTIFIER"])
apple_id(ENV["FASTLANE_APPLE_ID"])
itc_team_id(ENV["APP_STORE_CONNECT_TEAM_ID"])
team_id(ENV["DEVELOPER_PORTAL_TEAM_ID"])

Konfigurieren Sie Fastlane match

Fastlane passt ein neuer Ansatz zur code-Signierung von iOS. Fastlane match macht es Teams leicht, die erforderlichen Zertifikate und Provisioning-Profile für Ihre iOS-Apps zu verwalten.

Erstellen Sie ein neues privates Repository mit dem Namen certificates, zum Beispiel auf Ihrem GitHub persönlichen Konto oder Organisation.

Initialisieren Sie Fastlane match für Ihre iOS-Anwendung.

fastlane match init

Wählen Sie dann Option #1 (Git-Speicher).

[01:00:00]: fastlane match supports multiple storage modes, please select the one you want to use:1. git2. google_cloud3. s3?

Zuweisen Sie die URL des neu erstellten Repositorys.

[01:00:00]: Please create a new, private git repository to store the certificates and profiles there[01:00:00]: URL of the Git Repo: <YOUR_CERTIFICATES_REPO_URL>

Jetzt haben Sie innerhalb des Fastlane-Ordners ein Datei mit dem Namen Matchfile und _git_url_sollte auf die HTTPS-URL des Zertifikats-Repositorys gesetzt werden. Optional können Sie auch SSH verwenden, aber das erfordert einen anderen Schritt zum Ausführen.

# ios/Matchfilegit_url("https://github.com/gitusername/certificates")storage_mode("git")type("appstore")

Als Nächstes gehen wir zur Erstellung der Zertifikate und geben Ihre Anmeldeinformationen ein, wenn Sie dazu aufgefordert werden, mit Fastlane Match.

Sie werden aufgefordert, einen Passphrasseingabe zu machen. Denken Sie daran, ihn richtig einzugeben, da er später von GitHub Actions zum Entschlüsseln Ihres Zertifikats-Repository verwendet wird.

fastlane match appstore

Wenn alles gut ging, sollten Sie etwas Ähnliches sehen:

[01:40:52]: All required keys, certificates and provisioning profiles are installed 🙌

Wenn Sie bei GitHub und den notwendigen Berechtigungen Probleme hatten, könnte dieser beitrag Ihnen helfen, Authentifizierungstoken für Git zu generieren.

Erzeugte Zertifikate und Provisioning-Profile werden in die Zertifikats-Repository-Ressourcen hochgeladen

App Store Connect-Zertifikate

Zum Schluss öffnen Sie Ihr project in Xcode, und aktualisieren Sie das Provisioning-Profile für die Release-Konfiguration Ihrer App.

XCode-Zertifikate

Einige Dinge, die beachtet werden sollten 💡

MATCH

For die CI/CD muss Zugriff auf das Zertifikatsrepository haben, um die Zertifikate und Provisioningprofile importieren zu können. Sie können dies tun, indem Sie einen persönlichen Zugriffstoken (vorher verwenden) generieren, das die Berechtigung hat, private Repositories zu lesen oder zu schreiben.

In GitHub, gehen Sie zu EinstellungenEntwickler-EinstellungenPersönliche Zugriffstoken → klicken Sie Generate New Token → markieren Sie das repo Berechtigung → klicken Sie dann Generate token.

Persönliches Zugriffstoken erstellen

Haben Sie eine Kopie des generierten persönlichen Zugriffstokens. Sie werden es später für die Umgebungsvariable verwenden. GIT_TOKEN.

Dann ersetzen Sie Ihr Match-File, das in der Fastlane-Folder generiert wurde, durch Matchfile

CERTIFICATE_STORE_URL = ENV["CERTIFICATE_STORE_URL"]
GIT_USERNAME = ENV["GIT_USERNAME"]
GIT_TOKEN = ENV["GIT_TOKEN"]
FASTLANE_APPLE_ID = ENV["FASTLANE_APPLE_ID"]

git_url(CERTIFICATE_STORE_URL)
storage_mode("git")
type("appstore")
git_basic_authorization(Base64.strict_encode64("#{GIT_USERNAME}:#{GIT_TOKEN}"))
username(FASTLANE_APPLE_ID)

Dies wird von GitHub Actions verwendet, um die Zertifikate und Provisioningprofile zu importieren. Und die Variable wird in GitHub Secrets gesetzt, anstatt sie in der Datei hartcodiert zu haben.

Build Verarbeitung

In GitHub Aktionen, Sie werden auf der Grundlage der Minuten abgerechnet, die Sie für die Ausführung Ihres CI/CD-Workflows verwendet haben. Aus 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 oder Abhängigkeiten Ihres Projekts.

Wenn Sie dieselben Bedenken bezüglich der Preise haben wie ich für private Projekte, können Sie den skip_waiting_for_build_processing beibehalten, true.

Was ist der Haken? Sie müssen die Einhaltung der Compliance Ihres Apps in App Store Connect manuell aktualisieren, nachdem der Build verarbeitet wurde, damit Sie den Build an Ihre Benutzer verteilen können.

Dies ist nur ein optionaler Parameter, um die Build-Minuten für private Projekte zu sparen. Für kostenlose Projekte sollte dies kein Problem sein. Siehe Preise.

3. Setup GitHub Aktionen

Konfiguriere GitHub Geheimnisse

Haben Sie sich schon einmal gefragt, woher die Werte von dem ENV kommen? Nun, es ist kein Geheimnis mehr – es kommt aus Ihrem Projekts Geheimnis. 🤦

Setze GitHub Geheimnisse

1. APP_STORE_CONNECT_TEAM_ID - die ID deines App Store Connect-Teams, wenn du in mehreren Teams bist.

2. DEVELOPER_APP_ID - in App Store Connect, gehe zu der App → App-Informationen → Scrollen Sie nach unten zur General Information Abschnitt deiner App und suchen Sie nach Apple ID.

3. DEVELOPER_APP_IDENTIFIER - der Bundle-Identifier deiner App.

4. DEVELOPER_PORTAL_TEAM_ID - die ID deines Developer-Portal-Teams, wenn du in mehreren Teams bist.

5. FASTLANE_APPLE_ID - Die Apple-ID oder Entwickler-E-Mail, die Sie zum Verwalten der App verwenden.

6. GIT_USERNAME &#x26; GIT_TOKEN - Ihren Git-Nutzernamen und Ihren persönlichen Zugriffstoken.

7. MATCH_PASSWORD - Die Passphrase, die Sie bei der Initialisierung von match zugewiesen haben, wird zum Entschlüsseln der Zertifikate und Provisioning-Profile verwendet.

8. PROVISIONING_PROFILE_SPECIFIER - match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>, z. B. match AppStore com.domain.blabla.demo.

9. TEMP_KEYCHAIN_USER &#x26; TEMP_KEYCHAIN_PASSWORD - Zuweisen Sie einem temporären Schlüsselkartenbenutzer und einem Passwort für Ihren Workflow.

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

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

12. APPLE_KEY_CONTENT — App Store Connect API Schlüssel 🔺 Schlüsseldatei oder Schlüsselinhalt von .p8, Überprüfen Sie es

13. CERTIFICATE_STORE_URL — Die Repo-URL Ihrer Match-Schlüssel (z.B. https://github.com/***/fastlane_match.git)

4. Konfigurieren Sie das GitHub-Workflow-File

Erstellen Sie ein GitHub-Workflow-Verzeichnis.

cd .github/workflows

Im workflow Ordner erstellen Sie ein 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: 2.7.2
      - uses: maierj/fastlane-action@v2.3.0
        env:
          DEVELOPER_APP_IDENTIFIER: ${{ secrets.DEVELOPER_APP_IDENTIFIER }}
          DEVELOPER_APP_ID: ${{ secrets.DEVELOPER_APP_ID }}
          PROVISIONING_PROFILE_SPECIFIER: match AppStore ${{ secrets.DEVELOPER_APP_IDENTIFIER }}
          TEMP_KEYCHAIN_USER: ${{ secrets.TEMP_KEYCHAIN_USER }}
          TEMP_KEYCHAIN_PASSWORD: ${{ secrets.TEMP_KEYCHAIN_PASSWORD }}
          APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
          APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
          APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
          CERTIFICATE_STORE_URL: https://github.com/${{ secrets.CERTIFICATE_STORE_REPO }}.git
          GIT_USERNAME: ${{ secrets.GIT_USERNAME }}
          GIT_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
          FASTLANE_APPLE_ID: ${{ secrets.FASTLANE_APPLE_ID }}
          MATCH_USERNAME: ${{ secrets.FASTLANE_APPLE_ID }}
          MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
          APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }}
          DEVELOPER_PORTAL_TEAM_ID: ${{ secrets.DEVELOPER_PORTAL_TEAM_ID }}
        with:
          lane: closed_beta
      - name: Upload release bundle
        uses: actions/upload-artifact@v2
        with:
          name: ios-release
          path: ./App.ipa
          retention-days: 60

Diese Workflow sollte nach jedem GitHub-Tag ausgelöst werden, wenn Sie automatisierte Tags benötigen, zitieren Sie bitteAutomatisches Build und Release mit __CAPGO_KEEP_0__-Aktionen Automatic build and release with GitHub actions Automatic build and release with __CAPGO_KEEP_0__ actions

Dann wird diese Workflow deine NodeJS-Abhängigkeiten ziehen, sie installieren und dein JavaScript-Anwendungsprogramm bauen.

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

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

5. Workflow auslösen

Commit erstellen

Machen Sie einen commitSie sollten das aktive Workflow im Repository sehen.

Auslösen Sie den Workflow

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

Mit Commit gestartet

Nach einigen Minuten sollte die Veröffentlichung in Ihrem App Store Connect-Dashboard verfügbar sein.

Testflight-Dashboard

Kann man von der lokalen Maschine aus deployen?

Ja, das geht, und es ist einfach.

Stellen Sie sich vor, Sie haben ein privates Repository, und Sie haben die Minuten des kostenlosen Plans ausgeschöpft und möchten keine neuen Releases bezahlen, oder vielleicht bevorzugen Sie es, die Anwendung manuell zu übermitteln.

Los geht's

Ok, erst müssen wir in my_project_path/fastlane pfad einen Dateinamen namens .env, genau in demselben Pfad wie Rapidfile, um dieselben geheime Eigenschaften in unserem _GitHub, wie unten angegeben:

.env-Datei für die Bereitstellung von der lokalen Maschine

Jetzt können Sie zum Terminal und starten Sie das Fastlane von Ihrer Maschine:

fastlane closed_beta

❌ Wichtige Informationen über die .env Datei, da wir diese Daten nicht offenlegen möchten, müssen wir sie in unserer .gitignore, etwas Ähnliches: ❌

fastlane/*.env

Es sollte funktionieren wie bei den GitHub Actions auf dem Remote-Computer, aber auf unserem lokalen Computer. 🍻

Lokale Fastlane-Ausführung

Terminalausführung: $ Fastlane closed_beta

Wenn Sie bis hier gekommen sind, meine Glückwünsche, jetzt haben Sie einen vollautomatisierten Prozess für Ihre iOS-Apps mit Fastlane und GitHub Actions.

Jedes Mal, wenn Sie einen neuen Commit senden, wird in Google Play Console eine Release im Beta-Kanal erstellt. Ich werde diese Blog-Einträge verbessern, wenn Sie Feedbacks haben, wenn Sie Fragen oder Vorschläge haben, bitte lassen Sie es mich wissen per E-Mail martin@capgo.app

Auf Ihrem Gerät bauen

Wenn Sie noch immer auf Ihrem Gerät bauen müssen, müssen Sie sie manuell zur Provisionierung hinzufügen. Verbinden Sie Ihr Gerät mit Ihrem Mac und öffnen Sie das Gerätemenü Gerätemenü iOS finden Kopieren Sie dann Ihren Identifikator finden Sie den Identifikator für iOS Und dann starten Sie den Befehl: fastlane register_new_device Es wird Sie auffordern, einen Gerätenamen und den Identifikator festzulegen: Setzen Sie den Identifikator für iOS

Wenn Sie Probleme haben

Wenn Sie Probleme mit dem Entwicklungsgerät haben, können Sie es nicht testen usw. Das Problem wird in der Regel durch die folgende Lösung gelöst.

Es gibt einen magischen Befehl, der Ihnen helfen kann:

fastlane match nuke development
fastlane match development

Dann: Löschen Sie das Projekt, indem Sie die Taste Shift (⇧) + die Taste Command (⌘) + K halten oder "Produkt > Löschen" (es könnte als "Löschen des Build-Ordners" bezeichnet werden) auswählen

Versuchen Sie es dann noch einmal, die App auf Ihrem Gerät zu starten.

Vielen Dank

Dieser Blog basiert auf den folgenden Artikeln:

Live-Updates für Capacitor-Anwendungen

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

Los geht's!

Neueste Beiträge aus unserem Blog

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