Zum Hauptinhalt springen
CI/CD

Automatischer Capacitor IOS Build mit GitHub Actions mithilfe von match

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

Martin Donadieu

Martin Donadieu

Inhaltsmarketer

Automatischer Capacitor IOS Build mit GitHub Actions mithilfe von match

Automatischer iOS-Build mit GitHub Actions mithilfe von Match

Die Einrichtung einer CI/CD-Pipeline für Capacitor-Apps kann komplex und zeitaufwändig sein. Hier ist, was Sie wissen müssen:

Wir empfehlen nun die Verwendung Capgo mit der Capgo CLI für native Capacitor-Bauten. Dieser Leitfaden zu Fastlane Match wird für Teams aufrechterhalten, die bestehende GitHub-Actions-Pipelines weiterhin unterhalten, aber neue iOS-Bauten sollten die Capgo CLI verwenden, damit Sie Fastlane, Match-Repository, 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 Match, Xcode-Runner, Zertifikaten, Berechtigungsprofilen und Upload-Skripten. Capgo-Bau führt native, signierte iOS-Bauten von Ihrem bestehenden CI/CD-Pipeline aus:

  • Arbeitet mit Ihrer Pipeline: Auslösen Sie den 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 Build stellt Ihnen gepflegte Apple-Build-Umgebungen bereit, sodass Sie macOS-Runner, Xcode-Bilder, Fastlane oder Match-Repositories nicht selbst verwalten müssen.
  • Artikel und Einreichung: Laden Sie signierte Artefakte für die QA oder einreichen Sie Release-Builds über den Capgo CLI.

Preise

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

Set up Capgo Build in CI/CD

Kontext: Seite/Bereich: Capgo Builder / native cloud Build-Produktseite. Rolle: Website-Textzeile. Gesehen in: Seite native-build.astro. Nachrichten Schlüssel `native_build_builder_build_minutes` (Native Build Builder Build Minutes).

Einrichten Sie __CAPGO_KEEP_0__ Build in CI/CD

Continuous Delivery for iOS using Fastlane and GitHub Actions using match

Hier ist, was Sie tun müssen:

Bevor Sie mit der Anleitung fortfahren…

für einfache Workflows zu verwenden.

Price GitHub Action

Preis github Action

Die Dienstleistung ist ‘kostenlos’ 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 zum Zeitpunkt der Erstellung des Tutorials, sie könnten sich in Zukunft ändern) sehen.

🔴 Warnen wir Sie vor Anforderungen und Preisen, wenn Sie möchten, gehen wir weiter…

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

Lassen Sie uns loslegen!

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 Sie die Fastlane-Dateien
  6. Konfigurieren Sie Fastlane match

1. Verwenden Sie App Store Connect API mit Fastlane Match

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 Ihr Apple-Konto 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 verwenden zu können, benötigt Fastlane drei Dinge.

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

Erstellung eines App Store Connect API-Schlüssels

Um Schlüssel zu generieren, müssen Sie Admin-Berechtigungen in App Store Connect 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 — Auswahl von Benutzer und Zugriff.

App Store Connect-Benutzerzugriff

3 — Auswahl des Integrations-Tab.

App Store Connect API-Integration

4 — Klicken Sie auf Erstellen von API-Schlüssel oder auf die Schaltfläche (+) Add.

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 Zugriffsrechte. Wir empfehlen, App-Manager.

7 — Klicken Sie auf Generieren.

Ein API Schlüssels Zugriff kann nicht auf bestimmte Apps beschränkt werden.

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

App Store Connect Schlüssel herunterladen

Hier können Sie alle drei notwendigen Informationen abrufen.
<1> Issue-ID.
<2> Schlüssel-ID.
<3> Klicken Sie auf "Download API-Schlüssel" um Ihren API privaten 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. 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-Datei (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 sie in Fastlanes neue Aktion einsetzt. app_store_connect_api_keySie können andere Möglichkeiten in der Fastlane-Dokumentationerfahren. Ich zeige Ihnen diese Methode, weil ich glaube, dass sie die einfachste Möglichkeit ist, um mit den meisten CI auszukommen, wo 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 es ermöglicht, häufige mobile Entwicklungsarbeiten 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. Sie können viel mit Fastlane erreichen, aber für die Zwecke dieses Tutorials werden wir nur eine Handvoll grundlegender Aktionen verwenden.

Erstellen Sie einen Ordner namens Fastlane im 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 ist ein neuer Ansatz für die code-Signierung von iOS. Fastlane match erleichtert es Teams, 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

Dann wählen Sie 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 im Fastlane-Ordner eine Datei mit dem Namen Matchdatei und _git_url_sollte auf die HTTPS-URL des Zertifikats-Repositories gesetzt werden. Optional können Sie auch SSH verwenden, aber dafür ist ein anderer Schritt erforderlich.

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

Zu nächst gehen wir zur Erstellung der Zertifikate und geben Ihre Anmeldeinformationen ein, wenn Sie dazu aufgefordert werden, mit Fastlane Match.

Sie werden aufgefordert, einen Passwort zu erstellen. Denken Sie daran, es richtig zu speichern, da es später von GitHub Actions zum Entschlüsseln Ihres Zertifikats-Repositories verwendet wird.

fastlane match appstore

Wenn alles gut gelaufen ist, 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 Probleme hatten, kann diese Beitrag hilfreich sein, um Authentifizierungstoken für Git zu generieren.

Die generierten Zertifikate und Provisioning-Profile werden in den Ressourcen des Zertifikats-Repositories 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 zu beachten 💡

MATCH

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

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

Persönlichen 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-Profiles zu importieren. Und var wird in GitHub Secrets gesetzt, anstatt sie in der Datei hartcodiert zu haben

Build-Prozess

In GitHub Actions werden Sie auf die 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 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 oder Abhängigkeiten Ihres Projekts Wenn Sie dieselben Bedenken bezüglich der Preise haben wie ich für private Projekte, können Sie denbuilden

Processing skip_waiting_for_build_processing zu true.

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

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

3. Einrichten von GitHub Aktionen

Konfigurieren Sie GitHub-Geheimnisse

Haben Sie sich jemals gefragt, wo die Werte der ENV kommen her? Nun, es ist kein Geheimnis mehr – sie kommen aus Ihrem Projektschlüssel.

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 Ihrer App und suchen Sie nach Apple ID.

3. DEVELOPER_APP_IDENTIFIER - Ihrer App-Bundle-Identifikationsnummer.

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

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

6. GIT_USERNAME & 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 & 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 🔺Issuer ID.

12. APPLE_KEY_CONTENT — App Store Connect API Schlüssel 🔺 Schlüsseldatei oder Schlüsselinhalt von .p8, — Die Repository-URL Ihres Match-Schlüssels (z.B. https://__CAPGO_KEEP_0__.com/***/fastlane_match.git)

13. CERTIFICATE_STORE_URL 4. Konfigurieren Sie das __CAPGO_KEEP_0__-Workflow-File Erstellen Sie ein github-Workflow-Verzeichnis.)

4. Configure GitHub workflow file

Create a GitHub workflow directory.

cd .github/workflows

Diese Workflow sollte nach jedem __CAPGO_KEEP_0__ ausgelöst werden. workflow check it build-upload-ios.yml— Die Appflow-Kredenzials (z.B. Appflow Credentials Capgo Li1)

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

This workflow should be triggered after each GitHub Tag, wenn Sie die Automatisierung von Tags benötigen, beziehen Sie sich auf Automatische Erstellung und Veröffentlichung mit GitHub-Aktionen erstens.

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

Jedes Mal, wenn Sie einen neuen Commit senden, wird eine Veröffentlichung in TestFlight erstellt.

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

5. Workflow auslösen

Erstellen Sie einen Commit

Erstellen Sie einen Commit, Sie sollten das aktive Workflow im Repository sehen.

Trigger die Workflow

Pushen Sie die neuen Commits auf die Zweig main oder development Entscheiden Sie sich für eine der folgenden Optionen: Sie können die App live aktualisieren, indem Sie die Capacitor-App aktualisieren, oder Sie können die App über die App-Store-Verbindung aktualisieren. | Sie können die App live aktualisieren, indem Sie die Capacitor-App aktualisieren, oder Sie können die App über die App-Store-Verbindung aktualisieren. | Sie können die App live aktualisieren, indem Sie die Capacitor-App aktualisieren, oder Sie können die App über die App-Store-Verbindung aktualisieren. | Wenn Sie unsere Beratungsdienste in Anspruch nehmen, können Sie sich auf unsere Expertise verlassen, um Ihre Fragen zu beantworten. | Appflow-Plugins oder

um die Workflow auszulösen.

Mit Commit begonnen

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

Testflight-Dashboard

Kann man von der lokalen Maschine bereitstellen?

Ja, das ist möglich und sehr einfach.

Stellen Sie sich vor, Sie haben ein privates Repository und haben die Minuten des kostenlosen Plans aufgebraucht und möchten keine neuen Releases bezahlen oder bevorzugen die manuelle Einreichung der Anwendung.

Los geht's, wir machen es mal so, wie Sie es wollen. Wir erstellen in My Projekt Pfad/Fastlane Der Pfad eines Dateinamen namens .env, genau in demselben Pfad wie Fastfile, um dieselben geheime Eigenschaften wie in unserem _GitHub, wie unten angegeben, zu erstellen:

.env-Datei für die Bereitstellung von einem lokalen Computer

Jetzt können Sie zum Befehlszeilenterminal und den Befehl ausführen Fastlane aus Ihrer Maschine:

fastlane closed_beta

❌ Wichtige Informationen zum .env Datei, da wir diese Daten nicht offenlegen möchten, müssen wir sie in unserer .gitignoreDatei hinzufügen, etwas in dieser Art und Weise: ❌

fastlane/*.env

It should work the same as it happens from GitHub Actions on the remote machine but in our local machine. 🍻

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-Anwendungen mit Fastlane und GitHub Actions.

Jedes Mal, wenn Sie einen neuen Commit senden, wird eine Veröffentlichung im Google Play-Konsolen, Beta-Kanal, erstellt. Ich werde diese Blog-Einträge verbessern, wenn Sie Feedbacks haben, wenn Sie Fragen oder Vorschläge haben, zögern Sie bitte nicht, mich per E-Mail zu kontaktieren. martin@capgo.app

Auf Ihrem Gerät bauen

Wenn Sie immer noch auf Ihrem Gerät bauen müssen, müssen Sie sie manuell zur Bereitstellung hinzufügen. Verbinden Sie Ihr Gerät mit Ihrem Mac und öffnen Sie das Gerätemenü Gerät finden iOS-Menü Kopieren Sie dann Ihren Identifikator Identifikator finden iOS Und dann starten Sie den Befehl: fastlane register_new_device Es wird Sie auffordern, einen Gerätennamen und den Identifikator einzugeben: Wenn Sie Probleme haben

Wenn Sie Probleme mit dem Entwicklungsgerät haben, können Sie es nicht testen usw., dann löst es sich normalerweise.

Es gibt einen magischen Befehl, der Ihnen helfen kann:

Es gibt einen magischen Befehl, der Ihnen helfen kann:

fastlane match nuke development
fastlane match development

Dann: Den Projektordner bereinigen, indem Sie Shift(⇧)+Befehl(⌘)+K drücken oder "Produkt > Bereinigen" (es könnte als "Bereinigen des Build-Ordners" beschriftet sein) auswählen

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

Danke

Dieser Blog basiert auf folgenden Artikeln:

Fortsetzen Sie mit der automatischen Capacitor-IOS-Build- mit GitHub-Aktionen, die mit match verwendet werden

Wenn Sie __CAPGO_KEEP_0__ verwenden Automatische Capacitor-IOS-Build- mit GitHub-Aktionen, die mit match verwendet werden Um die CI/CD-Automatisierung zu planen, verbinden Sie es mit __CAPGO_KEEP_0__-CI/CD Capgo CI/CD zur Produktworkflow in Capgo CI/CD, Capgo Native Builds zur Produktworkflow in Capgo Native Builds, Capgo Integrations for the product workflow in Capgo Integrations, zur Produktworkflow in __CAPGO_KEEP_0__ Integrations, CI/CD-Integration GitHub Actions Integration GitHub Actions-Integration

Live-Updates für Capacitor-Apps

Wenn ein Fehler im Web-Schicht lebt, liefern Sie die Reparatur über Capgo 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.

Menschliche Unterstützung von Martin

Los geht's jetzt

Neueste von unserem Blog

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