Lompat ke konten utama
CI/CD

Build otomatis Capacitor IOS dengan GitHub aksi menggunakan match

Cara mengatur pipeline CI/CD untuk aplikasi IOS Ionic Anda menggunakan fastlane dan GitHub Actions dalam 5 menit (2022)

Martin Donadieu

Martin Donadieu

Spesialis Konten

Build otomatis Capacitor IOS dengan GitHub aksi menggunakan match

Automatic iOS Builds dengan GitHub Actions menggunakan Match

Pengaturan CI/CD untuk aplikasi Capacitor dapat kompleks dan memakan waktu. Berikut adalah apa yang Anda butuhkan untuk tahu:

Sekarang kami merekomendasikan menggunakan Capgo Build dengan Capgo CLI untuk pembangunan native Capacitor. Petunjuk Panduan Match Fastlane ini dipertahankan untuk tim yang memelihara pipeline aksi GitHub yang sudah ada, tetapi pembangunan iOS baru harus menggunakan Capgo CLI sehingga Anda tidak perlu memelihara repositori Fastlane, Match, runner Xcode, sertifikat, dan skrip unggah sendiri.

Capgo Build untuk CI/CD oleh Capgo

Lebihkan Fastlane Match, runner Xcode, sertifikat, profil pengaturan, dan skrip unggah. Capgo Build melakukan pembangunan iOS yang ditandatangani secara native dari pipeline CI/CD yang sudah ada Anda:

  • Kompatibel dengan pipeline Anda: Aktifkan Capgo Build dari GitHub Actions, GitLab CI, Jenkins, atau skrip lokal setelah pembangunan web Anda npx cap sync.
  • Tanda tangan dari rahasia CI: Simpan kunci App Store Connect, sertifikat, profil pengaturan, kata sandi, dan ID tim di rahasia CI Anda sendiri.
  • Tidak ada perawatan runner asli: Capgo Build menyediakan lingkungan pembangunan Apple yang dipelihara, sehingga Anda tidak perlu mengelola runner macOS, gambar Xcode, Fastlane, atau repositori Match.
  • Artefak dan pengiriman: Unduh artefak yang ditandatangani untuk QA atau kirimkan rilis melalui Capgo CLI.

Harga

  • Rencana Capgo mulai dari $12/bulan
  • Menggunakan pembaruan OTA dan sekitar 15 pembangunan asli per bulan
  • Menit tambahan pembangunan akan dibebankan berdasarkan menit melalui kredit

Konfigurasi Capgo Build di CI/CD

Petunjuk Pengaturan Manual

Berikut adalah langkah-langkah yang perlu Anda lakukan:

Pengiriman Terus-menerus untuk iOS menggunakan Fastlane dan GitHub Aksi menggunakan match

Persyaratan

Sebelum melanjutkan dengan tutorial…

Penting tentang harga

Harga GitHub Action

https://github.com/features/actions

Jasa ini gratis hingga batas tertentu, tergantung pada mesin yang dipilih.
Kita akan menggunakan sebuah macOS mesin, Anda dapat melihat harga dan batasan (harga pada saat pembuatan tutorial, mereka mungkin mengalami perubahan di masa depan)

🔴 Setelah diberi peringatan tentang persyaratan dan harga, jika Anda suka, kita melanjutkan…

📣 Dalam postingan ini kita asumsikan bahwa kita telah membuat aplikasi di iTunes connect, kita memiliki sertifikat dari ekosistem Apple, semuanya akan dicopy oleh Fastlane!

Mari kita mulai menjelajah!

Langkah-langkah yang perlu diikuti dalam postingan ini

  1. Menggunakan App Store Connect API dengan Fastlane Match
  2. Persyaratan
  3. Membuat Kunci App Store Connect API
  4. Menggunakan Kunci App Store Connect API
  5. Salin File Fastlane
  6. Konfigurasi Fastlane match

1. Menggunakan App Store Connect API dengan Fastlane Match

Mulai Februari 2021, verifikasi dua faktor atau verifikasi dua langkah diperlukan untuk semua pengguna untuk masuk ke App Store Connect. Layer keamanan tambahan untuk ID Apple Anda membantu memastikan bahwa Anda adalah satu-satunya orang yang dapat mengakses akun Anda.
Dari Dukungan Apple

Mulai menggunakan match memerlukan Anda untuk membatalkan sertifikat yang ada. Tapi jangan khawatir, Anda akan memiliki yang baru secara langsung.

Persyaratan

To dapat menggunakan App Store Connect API, Fastlane memerlukan tiga hal.

  1. ID Penerbit.
  2. ID Kunci.
  3. File Kunci atau Konten Kunci.

Membuat Kunci App Store Connect API

Untuk menghasilkan kunci, Anda harus memiliki izin Admin di App Store Connect. Jika Anda tidak memiliki izin tersebut, Anda dapat mengarahkan orang yang relevan ke artikel ini dan mengikuti instruksi berikut.

1 — Masuk ke App Store Connect.

2 — Pilih Pengguna dan Akses.

Akses Pengguna App Store Connect

3 — Pilih tab Integrasi.

Integrasi App Store Connect API

4 — Klik Generate API Key atau tombol (+) Tambah.

Kunci API App Store Connect membuat

5 — Masukkan nama untuk kunci. Nama hanya untuk referensi Anda dan tidak menjadi bagian dari kunci itu sendiri.

Nama kunci API App Store Connect membuat

6 — Di bawah Akses, pilih peran untuk kunci. Peran yang berlaku untuk kunci sama dengan peran yang berlaku untuk pengguna di tim Anda. Lihat izin akses. Kami merekomendasikan untuk memilih Manajer Aplikasi.

7 — Klik Generate.

Sebuah kunci API tidak dapat di batasi aksesnya hanya untuk aplikasi tertentu.

Nama kunci baru, ID kunci, tautan download, dan informasi lainnya muncul di halaman.

Unduh Kunci App Store Connect

Anda dapat mendapatkan semua informasi yang diperlukan di sini.
<1> ID Masalah.
<2> ID Kunci.
<3> Klik "Unduh Kunci API" untuk mengunduh kunci pribadi API Anda. Tautan download hanya muncul jika kunci pribadi belum diunduh. Apple tidak menyimpan salinan kunci pribadi. Jadi, Anda hanya dapat mengunduhnya sekali.

🔴 Simpan kunci pribadi Anda di tempat yang aman. Anda tidak boleh berbagi kunci, menyimpan kunci di code repository, atau menyertakan kunci di sisi klien code.

Menggunakan Kunci API App Store Connect

File Kunci API (file p8 yang Anda download), ID kunci, dan ID pengirim adalah diperlukan untuk membuat token JWT untuk otorisasi. Ada beberapa cara informasi ini dapat diinputkan ke Fastlane menggunakan aksi baru Fastlane, app_store_connect_api_key Anda dapat mengetahui cara lainnya di Dokumentasi FastlaneSaya menunjukkan metode ini karena saya pikir ini adalah cara termudah untuk bekerja dengan CI yang paling umum, di mana Anda dapat menetapkan variabel lingkungan.

Sekarang kita dapat mengelola Fastlane dengan kunci App Store Connect API yang luar biasa!

2. Salin file Fastlane

Fastlane adalah sebuah library Ruby yang dibuat untuk mengotomasi tugas pengembangan mobile yang umum. Dengan menggunakan Fastlane, Anda dapat mengonfigurasi jalur

lanes

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

yang menggabungkan serangkaian

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"])

aksi

yang melakukan tugas yang biasanya Anda lakukan menggunakan Android Studio. Anda dapat melakukan banyak hal dengan Fastlane, tetapi untuk tujuan tutorial ini, kita akan menggunakan hanya beberapa aksi inti. Buat folder Fastlane di root proyek Anda dan salin file berikut: Fastfile is a new approach to iOS’s code signing. Fastlane match makes it easy for teams to manage the required certificates and provisioning profiles for your iOS apps.

Konfigurasi Fastlane match certificates, for example on your GitHub personal account or organization.

Menginisialisasi Fastlane match untuk aplikasi iOS Anda.

fastlane match init

Lalu pilih opsi #1 (Penyimpanan Git).

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

Menetapkan URL repositori yang baru saja dibuat.

[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>

Sekarang Anda memiliki di folder Fastlane sebuah file bernama Matchfile dan _git_url_harus disesuaikan dengan HTTPS URL repositori sertifikat. Jika Anda ingin menggunakan SSH, maka Anda harus melakukan langkah yang berbeda.

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

Selanjutnya, kita akan mengenerate sertifikat dan memasukkan kreditensi Anda ketika diminta dengan Fastlane Match.

Anda akan diminta untuk memasukkan kata sandi. Ingatlah dengan benar karena kata sandi tersebut akan digunakan oleh GitHub Actions untuk mengenkripsi repositori sertifikat Anda.

fastlane match appstore

Jika semuanya berjalan dengan lancar, Anda harus melihat sesuatu seperti itu:

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

Jika Anda mengalami masalah dengan GitHub dan hak akses yang diperlukan, mungkin Anda harus membaca postingan ini akan membantu Anda untuk menghasilkan token autentikasi untuk git.

Sertifikat dan profil pengaturan yang dihasilkan diunggah ke sumber daya repositori sertifikat

Sertifikat App Store Connect

Terakhir, buka aplikasi project di Xcode, dan perbarui profil pengaturan untuk konfigurasi rilis aplikasi Anda.

Sertifikat XCode

Beberapa hal yang perlu diperhatikan 💡

MATCH

Untuk CI/CD dapat mengimport sertifikat dan profil pengaturan, ia harus memiliki akses ke repositori sertifikat. Anda dapat melakukannya dengan menghasilkan token akses pribadi (harus digunakan sebelumnya) yang memiliki ruang lingkup untuk mengakses atau membaca repositori pribadi.

Di GitHub, buka PengaturanPengaturan PengembangToken akses pribadi → klik Generate New Token → centang repo ruang lingkup → kemudian klik Generate token.

Buat Token Akses Pribadi

Anda memiliki salinan token akses pribadi yang dihasilkan. Anda akan menggunakan token tersebut kemudian untuk variabel lingkungan GIT_TOKEN.

Kemudian ganti file match yang dihasilkan di folder Fastlane dengan 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)

This will be used by GitHub Actions to import the certificates and provisioning profiles. And var will be set in GitHub Secrets, instead of hard-coding them in the file.

Dan variabel akan ditetapkan di __CAPGO_KEEP_1__ Secrets, bukan dengan mengkodekan mereka secara keras di file.

In GitHub Actions, Di __CAPGO_KEEP_0__ Actions, biaya Anda berdasarkan menit yang digunakan untuk menjalankan alur kerja CI/CD. Dari pengalaman, membutuhkan sekitar 10–15 menit sebelum proses pembangunan dapat diproses di App Store Connect.

Untuk proyek pribadi, biaya perkiraan per build dapat mencapai $0.08/min x 15 menit = $1.2, atau lebih, tergantung pada konfigurasi atau dependensi proyek Anda.

Jika Anda memiliki kekhawatiran yang sama tentang harga seperti saya untuk proyek pribadi, Anda dapat mempertahankan skip_waiting_for_build_processing ke true.

Apa yang menjadi masalahnya? Anda harus memperbarui secara manual kompatibilitas aplikasi Anda di App Store Connect setelah build telah diproses, agar Anda dapat mendistribusikan build ke pengguna Anda.

Ini hanya merupakan parameter opsional untuk diperbarui jika Anda ingin menghemat menit build untuk proyek pribadi. Untuk proyek gratis, ini tidak akan menjadi masalah sama sekali. Lihat harga.

3. Mengatur GitHub Aksi

Konfigurasi GitHub rahasia

Pernahkah Anda bertanya-tanya dari mana nilai-nilai ENV berasal? Nah, itu tidak lagi rahasia – itu dari rahasia proyek Anda. 🤦

Set GitHub rahasia

1. APP_STORE_CONNECT_TEAM_ID - ID tim Anda di App Store Connect jika Anda berada di tim lebih dari satu.

2. DEVELOPER_APP_ID - di App Store Connect, buka aplikasi Anda → Informasi Aplikasi → Gulir ke bawah ke bagian General Information dari aplikasi Anda dan cari Apple ID.

3. DEVELOPER_APP_IDENTIFIER - ID pengenal aplikasi Anda.

4. DEVELOPER_PORTAL_TEAM_ID - ID tim Portal Pengembang Anda jika Anda berada di tim lebih dari satu.

5. FASTLANE_APPLE_ID - ID Apple atau alamat email pengembang yang Anda gunakan untuk mengelola aplikasi.

6. GIT_USERNAME & GIT_TOKEN - Nama pengguna Git Anda dan token akses pribadi Anda.

7. MATCH_PASSWORD - kata sandi yang Anda tentukan ketika menginisialisasi match, akan digunakan untuk mendekripsi sertifikat dan profil pengembangan.

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

9. TEMP_KEYCHAIN_USER &#x26; TEMP_KEYCHAIN_PASSWORD - Tambahkan pengguna dan kata sandi sementara untuk alur kerja Anda.

10. APPLE_KEY_ID — App Store Connect API Kunci 🔺ID Kunci.

11. APPLE_ISSUER_ID — App Store Connect API Kunci 🔺ID Penerbit.

12. APPLE_KEY_CONTENT — App Store Connect API Kunci 🔺 File Kunci atau Konten Kunci dari .p8 periksa, — URL repositori kunci Match Anda (misal:

13. CERTIFICATE_STORE_URL https://__CAPGO_KEEP_0__.com/***/fastlane_match.git 4. Konfigurasi file alur kerja github)

Buat direktori alur kerja GitHub

5. Tambahkan pengaturan GitHub

cd .github/workflows

Di dalam folder, buatlah sebuah file bernama __CAPGO_KEEP_0__ workflow dan tambahkan kode berikut: build-upload-ios.ymlAlur kerja ini harus diaktifkan setelah setiap __CAPGO_KEEP_0__

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 , jika Anda memerlukan otomatisasi tag, silakan lihatAutomatic build and release dengan __CAPGO_KEEP_0__ actions Automatic build and release with GitHub actions Kemudian alur kerja ini akan menarik dependensi NodeJS Anda, menginstalnya, dan membangun aplikasi JavaScript Anda.

Setiap kali Anda mengirimkan commit baru, rilis akan dibangun di TestFlight.

Aplikasi Anda tidak perlu menggunakan Ionic, hanya __CAPGO_KEEP_0__ dasar yang wajib, dan dapat memiliki modul Cordova yang lama, tetapi __CAPGO_KEEP_1__ plugin JavaScript sebaiknya dipilih.

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.

6. __CAPGO_KEEP_0__

Membuat Komit

Membuat sebuah komit, kamu akan melihat alur kerja aktif di repository.Mengaktifkan alur kerja

Mengirimkan perubahan baru ke cabang

atau main untuk mengaktifkan alur kerja. development Dibuat dengan komit

Setelah beberapa menit, hasil build seharusnya tersedia di dashboard App Store Connect kamu.

Dashboard Testflight

Bisa mengundeploy dari mesin lokal?

__CAPGO_KEEP_0__

Ya, kamu bisa, dan itu sangat mudah.

Bayangkan kamu memiliki repositori pribadi, dan kamu telah menggunakan menit gratis dari rencana gratis dan kamu tidak ingin membayar untuk rilis baru, atau mungkin kamu lebih suka mengirimkan aplikasi secara manual.

Mari kita lakukan

Ok, terlebih dahulu kita perlu membuat di my_project_path/fastlane path sebuah file yang disebut .env, hanya di path yang sama dengan Fastfile, agar kita bisa membuat properti rahasia yang sama seperti yang ada di ___CAPGO_KEEP_0__, yaitu: a_s di bawah ini: Let's go for it Ok, terlebih dahulu kita perlu membuat di my_project_path/fastlane path sebuah file yang disebut .env, hanya di path yang sama dengan Fastfile, agar kita bisa membuat properti rahasia yang sama seperti yang ada di _GitHub, yaitu: a_s di bawah ini:

.env file untuk mengdeploy dari mesin lokal

Sekarang, Anda dapat pergi ke terminal dan meluncurkan Fastlane dari mesin Anda:

fastlane closed_beta

❌ Hal yang penting tentang .env file, karena kami tidak ingin mengungkapkan data ini, kami harus menambahkannya di .gitignore, seperti itu: ❌

fastlane/*.env

Hal ini harus berfungsi sama seperti yang terjadi dari GitHub Actions pada mesin remote tetapi di mesin lokal kami. 🍻

Proses Fastlane Lokal

Eksekusi Terminal: $ Fastlane closed_beta

Jika Anda telah mencapai ini, selamat, Anda telah memiliki proses otomatis yang lengkap untuk aplikasi iOS Anda dengan Fastlane dan GitHub Aksi.

Setiap kali Anda mengirimkan komit baru, rilis akan dibangun di Google Play Console, saluran beta. Saya akan memperbaiki blog ini dengan umpan balik Anda, jika Anda memiliki pertanyaan atau saran, silakan beritahu saya melalui email martin@capgo.app

Bangun di Perangkat Anda

Jika Anda masih perlu membangun di perangkat Anda, Anda perlu menambahkannya secara manual ke pengaturan provisi. Hubungkan perangkat Anda ke Mac Anda dan buka menu perangkat Temukan menu perangkat iOS Lalu salin identifikasi Anda Temukan identifikasi iOS Dan kemudian mulai perintah: fastlane register_new_device Perangkat akan meminta Anda untuk menetapkan nama perangkat dan identifikasi: set identifier ios

Jika Anda mengalami masalah

Jika Anda memiliki masalah dengan perangkat pengembang yang tidak dapat diuji, dll. Biasanya dapat diperbaiki.

Ada perintah ajaib yang dapat menyelamatkan Anda:

fastlane match nuke development
fastlane match development

Lalu : Bersihkan proyek dengan menahan Shift(⇧)+Command(⌘)+K atau memilih Product > Bersihkan (mungkin terlabel “Bersihkan Folder Pembangunan”)

Lalu coba jalankan aplikasi lagi pada perangkat Anda.

Terima kasih

Artikel ini berdasarkan pada artikel berikut:

Keep going from Automatic Capacitor IOS build with GitHub actions using match

Jika Anda menggunakan Pembangunan Otomatis Capacitor IOS dengan GitHub aksi menggunakan match untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo CI/CD untuk alur kerja produk di Capgo CI/CD, Capgo Pembangunan Asli untuk alur kerja produk di Capgo Pembangunan Asli, Capgo Integrasi untuk alur kerja produk di Capgo Integrasi, Integrasi CI/CD untuk detail implementasi di Integrasi CI/CD, dan GitHub Integrasi Aksi untuk detail implementasi di GitHub Integrasi Aksi.

Perbarui aplikasi Capacitor secara langsung

Ketika ada bug layer web yang aktif, kirimkan perbaikan melalui Capgo bukan menunggu hari-hari untuk mendapatkan persetujuan toko aplikasi. Pengguna mendapatkan perbaruan di latar belakang sementara perubahan native tetap dalam jalur review normal.

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk menciptakan sebuah aplikasi mobile yang benar-benar profesional.