Zum Hauptinhalt springen
CI/CD

Automatische Capacitor IOS-Build mit GitHub-Aktionen mithilfe von match

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

Artikelcredits

Martin Donadieu

Autor

Valeria

Rezensent

Jordan

Editor

Automatisches Capacitor iOS-Build 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 der Capgo- CLI für native Capacitor-Bauten. Dieser Fastlane Match-Leitfaden wird für Teams aufrechterhalten, die bestehende GitHub-Aktionen-Pipelines weiterhin unterhalten, aber neue iOS-Bauten sollten die Capgo- CLI verwenden, damit Sie keine Fastlane, Match-Repository, Xcode-Runner, Zertifikate und Upload-Skripte selbst pflegen müssen.

Capgo-Build für CI/CD durch Capgo

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

  • Arbeitet mit Ihrer Pipeline: Auslösen Sie Capgo Build von GitHub Actions, GitLab CI, Jenkins oder lokalen Skripten nach Ihrem Web-Build und npx cap sync.
  • Signierung aus CI-Secrets: Halten Sie App Store Connect-Schlüssel, Zertifikate, Provisioning-Profiles, Passwörter und Team-IDs in Ihren eigenen CI-Secrets.
  • Keine native Runner-Vermögensaufsicht: Capgo Build stellt gepflegte Apple-Build-Umgebungen bereit, sodass Sie keine macOS-Runner, Xcode-Bilder, Fastlane oder Match-Repository 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
  • Umfasst OTA-Updates und etwa 15 native Builds pro Monat
  • Zusätzliche Build-Minuten werden durch Minuten berechnet und mit Credits abgerechnet

Setze Capgo Build in CI/CD ein

Manuelles Setup-Handbuch

Hier ist, was du tun musst:

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

Voraussetzungen

Bevor du mit dem Tutorial fortfährst…

  • Stelle sicher, dass du Fastlane installiert hast auf deinem Entwicklungsrechner.
  • Mitgliedschaft im iOS-Entwicklerprogramm.
  • Sehnsucht, etwas zu lesen 😆…
  • Ein Team aus vielen Entwicklern, andernfalls empfehlen wir, zu verwenden fastlane cert zur Vereinfachung von Workflows.

Wichtig über den Preis

Preis GitHub Action

https://github.com/features/actions

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

🔴 Einmal gewarnt vor Anforderungen und Preisen, wenn Sie möchten, fahren wir fort…

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

Lass uns loslassen

Schritte, die im Beitrag beschrieben werden

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

Um mit match zu beginnen, 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. Zertifikats-ID.
  3. Zertifikatsdatei oder Zertifikatsinhalt.

Erstellung einer App Store Connect API-Zertifikats-ID

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

1 — Anmelden zu 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

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

App Store Connect API-Schlüssel erstellen

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 API-Schlüssel erstellen: 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 RollenberechtigungenWir empfehlen die Auswahl App-Manager.

7 — Klicken Sie auf Generieren.

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

Herunterladen von App Store Connect-Schlüsseln

Sie können alle drei notwendigen Informationen hier finden.
<1> Issue-ID.
<2> Schlüssel-ID.
<3> Klicken Sie auf "Herunterladen API-Schlüssel" um Ihren API-Schlüssel herunterzuladen. Der Download-Link erscheint nur, wenn der private Schlüssel noch nicht heruntergeladen wurde. Apple hält keinen Kopie des privaten Schlüssels. Sie können ihn also 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 einbinden.

Verwendung eines App Store Connect API-Schlüssels

The API Schlüsseldatei (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, indem man sich auf die neue Aktion von Fastlane bezieht. app_store_connect_api_key. Sie können andere Möglichkeiten in Fastlane-Dokumentation . I show this method because I think it is the easiest way to work with most CI out there, where you can set environment variables.

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

2. Kopieren Sie Fastlane-Dateien

Fastlane is a Ruby library created to automate common mobile development tasks. Using Fastlane, you can configure custom “lanes” which bundle a series of “actions” that perform tasks that you’d normally perform using Android studio. You can do a lot with Fastlane, but for the purposes of this tutorial, we’ll be using only a handful of core actions.

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 match is eine neue Ansicht zur code Signierung von iOS. Fastlane match macht es Teams leicht, die erforderlichen Zertifikate und Berechtigungsprofile für Ihre iOS-Apps zu verwalten.

Erstelle 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-App.

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_context: Seite/ Bereich: Capgo-Marketing-Website. Rolle: Kurzbeschriftung oder Navigationselement. Gesehen in: Seite trust.astro. Nachrichtsschlüssel `und` (Und).

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

Ziehen Sie als Nächstes die Zertifikate und geben Sie Ihre Anmeldeinformationen ein, wenn Sie dazu aufgefordert werden, mit Fastlane Match.

You will be prompted to enter a passphrase. Remember it correctly because it will be used later by GitHub Actions to decrypt your certificates repository.

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 erforderlichen Berechtigungen ein Problem hatten, vielleicht hilft Ihnen diese Beitrag wird Ihnen helfen, Authentifizierungstoken für Git zu generieren.

Generierte Zertifikate und Provisioning-Profiles werden in den Zertifikats-Repository-Ressourcen hochgeladen.

App Store Connect-Zertifikate

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

XCode-Zertifikate

Einige Dinge, die beachtet werden sollten 💡

MATCH

Damit die CI/CD die Zertifikate und Provisioning-Profiles importieren kann, benötigt sie Zugriff auf das Zertifikats-Repository. Sie können dies tun, indem Sie einen persönlichen Zugriffstoken (der vorher verwendet werden sollte) generieren, der den Zugriff auf oder das Lesen von privaten Repositories ermöglicht.

In GitHub, gehen Sie zu Einstellungen → Entwickler-Einstellungen → Persönliche Zugriffstoken → Klicken Sie Generate New Token → klicken Sie auf repo Scope → 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 Provisioning-Profile zu importieren. Und var wird in GitHub-Geheimnissen gesetzt, anstatt sie in der Datei hartcodiert zu haben

Build-Prozess

In GitHub Aktionen, Sie werden nach Minuten abgerechnet. you have used for running your CI/CD workflow. From experience, it takes about 10–15 minutes before a build can be processed in App Store Connect.

Für private Projekte kann die geschätzte Kosten pro Build bis zu , oder mehr, je nach Konfiguration oder Abhängigkeiten Ihres Projekts.Abhängig von der Konfiguration oder den Abhängigkeiten Ihres Projekts.

Wenn Sie die gleichen Bedenken hinsichtlich der Preise wie ich für private Projekte haben, können Sie den skip_waiting_for_build_processing to true.

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

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

Preise, 3. Einrichten von GitHub Aktionen

Konfigurieren Sie GitHub-Geheimnisse

Kennen Sie sich jemals gefragt, wo die Werte der ENV herkommen? Nun, es ist kein Geheimnis mehr – sie kommen aus Ihrem Projekts Geheimnis. 🤦

Setzen Sie GitHub-Geheimnisse

1. APP_STORE_CONNECT_TEAM_ID - die ID Ihres App Store Connect-Teams, wenn Sie in mehreren Teams sind.

2. DEVELOPER_APP_ID - in App Store Connect gehen Sie zum App → - App-Informationen - → Scrollen Sie nach unten zur General Information - Abschnitt Ihres Apps und suchen Sie nach Apple ID.

3. DEVELOPER_APP_IDENTIFIER - die App-Identifikationsnummer Ihres Apps.

4. DEVELOPER_PORTAL_TEAM_ID - die ID Ihres Entwickler-Portal-Teams, wenn Sie in mehreren Teams sind.

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

6. GIT_USERNAME &amp; GIT_TOKEN - Deine Git-Nutzernamen und dein persönlicher Zugriffstoken.

7. MATCH_PASSWORD - Der Passphrase, den du bei der Initialisierung von Match zugewiesen hast, wird für die Entschlüsselung 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 &amp; TEMP_KEYCHAIN_PASSWORD - Zuweisen Sie einem temporären Schlüsselkartenbenutzer und 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, prüfen Sie es

13. CERTIFICATE_STORE_URL — Die Repository-URL deiner 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

Innerhalb des workflow Ordners 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. tagAutomatisches Build und Release mit __CAPGO_KEEP_0__-Aktionen Automatische Build- und Release-Vorgänge mit GitHub-Aktionen first.

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

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

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

5. Workflow auslösen

Erstellen Sie einen Commit

Mache ein commitSie sehen den aktiven Workflow im Repository.

Auslösen des Workflows

Pushen Sie die neuen Commits in die Zweig. main or development Mit Commit gestartet

Mit dem Commit

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

Testflug-Dashboard

Kann man von der lokalen Maschine bereitstellen?

Ja, das geht, und es ist einfach.

Stellen Sie sich vor, Sie haben einen privaten Repository, und Sie haben die Minuten des kostenlosen Plans aufgebraucht und möchten keine neuen Releases bezahlen, oder vielleicht bevorzugen Sie, die Anwendung manuell zu übermitteln.

Los geht's!

Ok, erst müssen wir in meinem Projektverzeichnis/fastlane dem Pfad einen Dateien namens .env, genau in demselben Pfad wie Fastfile, um ein gleichartiges zu erstellen Geheimnis Eigenschaften gefunden 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 Datei, da wir diese Daten nicht offenlegen möchten, müssen wir sie in unserem .gitignore, etwas wie das: ❌

fastlane/*.env

Es sollte funktionieren wie auf dem Remote-Computer, wenn Sie GitHub Actions ausführen, aber auf Ihrem lokalen Computer. 🍻

lokale Fastlane-Ausführung

Befehlszeile: $ Fastlane closed_beta

Wenn Sie bis hierher gekommen sind, gratuliere ich Ihnen, jetzt haben Sie einen vollautomatisierten Prozess für Ihre iOS-Anwendungen mit Fastlane und GitHub Actions.

Jedes Mal, wenn Sie einen neuen Commit senden, wird eine Release in Google Play Console, 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 Identifier finden Sie die Identifikationsnummer für iOS Und dann starten Sie die folgende Anweisung: fastlane register_new_device Es wird Sie auffordern, einen Gerätenamen und die Identifikationsnummer einzugeben: setzen Sie die Identifikationsnummer für iOS

Wenn Sie Probleme haben

If you have issue with dev device not able to test etc that usually fix it.

Dort ist ein magischer Befehl, der Ihnen helfen kann:

fastlane match nuke development
fastlane match development

Dann : Projekt sauber machen, indem man Shift(⇧)+Befehl(⌘)+K drückt oder "Produkt" > "Clean" auswählt (es könnte als "Clean Build Ordner" beschriftet sein)

Dann versuchen Sie es erneut, die App auf Ihrem Gerät zu starten.

Dankeschön

Dieser Blog basiert auf den folgenden Artikeln:

Fortsetzen von Automatic Capacitor IOS-Build mit GitHub-Aktionen mit match

Wenn Sie Capgo verwenden Automatic Capacitor IOS-Build mit GitHub-Aktionen mit match 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 für die Implementierungsdetails in CI/CD-Integration, und GitHub Aktionen-Integration für die Implementierungsdetails in GitHub Aktionen-Integration.

Live Updates für Capacitor-Apps

Wenn ein Fehler im Weblayer live ist, liefern Sie die Reparatur über Capgo und nicht durch Warten auf die Genehmigung des App-Stores. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen ihren normalen Review-Prozess durchlaufen.

Menschliche Unterstützung von Martin

Get Started Now

Neueste aus unserem Blog

Capgo bietet Ihnen die besten Einblicke, die Sie benötigen, um eine echte Profi-App zu erstellen.