Beranda __CAPGO_KEEP_0__
Pengintegrasian CI/CD

Automatic Capacitor IOS build with GitHub actions using match

How to set up a CI/CD pipeline for your IOS Ionic app using fastlane and GitHub Actions in 5 mins (2022)

Kredit Artikel

Martin Donadieu

Penulis

Valeria

Pengulas

Jordan

Editor

Automatic Capacitor IOS build with GitHub actions using match

Automatic iOS Builds with GitHub Actions using Match

Pengaturan CI/CD untuk aplikasi Capacitor dapat kompleks dan memakan waktu. Berikut adalah hal-hal yang perlu Anda ketahui:

Sekarang kami merekomendasikan menggunakan Capgo Build dengan Capgo CLI untuk pembangunan native Capacitor. Panduan Match Fastlane ini dipertahankan untuk tim yang menjaga pipeline Aksi GitHub yang sudah ada, tetapi pembangunan iOS baru harus menggunakan Capgo CLI sehingga Anda tidak perlu menjaga 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 native yang ditandatangani dari pipeline CI/CD yang sudah ada Anda:

  • Kompatibel dengan pipeline Anda: Trigger Capgo Pembangunan dari GitHub Aksi, GitLab CI, Jenkins, atau skrip lokal setelah pembangunan web Anda dan npx cap sync.
  • Signing dari rahasia CI: Simpan kunci App Store Connect, sertifikat, profil pengaturan, kata sandi, dan ID tim di rahasia CI Anda sendiri.
  • No native runner upkeep: Capgo Pembangunan menyediakan lingkungan pembangunan Apple yang dipelihara, sehingga Anda tidak perlu mengelola runner macOS, gambar Xcode, Fastlane, atau repositori Match.
  • Artifacts dan pengiriman: Unduh artefak yang ditandatangani untuk QA atau kirimkan rilis pembangunan melalui Capgo CLI.

Pricing

  • : Rencana Capgo mulai dari $12/bulan
  • : Termasuk pembaruan OTA dan sekitar 15 pembangunan native per bulan
  • : Menit tambahan pembangunan dibebankan berdasarkan menit melalui kredit

: Atur Capgo Pembangunan 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

Prasyarat

Sebelum melanjutkan dengan tutorial ini...

  • Pastikan Anda telah menginstal Fastlane di mesin pengembangan Anda. Anggota program pengembang iOS.
  • Kepuasan membaca 😆...
  • Sebuah tim pengembang banyak orang, jika tidak, kami merekomendasikan untuk menggunakan
  • fastlane cert fastlane cert untuk alur kerja yang lebih sederhana.

Perlu diingat tentang harga.

Harga GitHub Aksi

https://github.com/features/actions

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

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

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

Mari kita mulai menjelajah…

Langkah-langkah yang perlu diikuti dalam postingan ini

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

1. Memakai 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 Bantuan Apple

Membuat match memulai 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.

App Store Connect API Integration

4 — Click Generate API Key or the Add (+) button.

App Store Connect API keys create

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

App Store Connect API keys create name

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 penggunaan. Kami merekomendasikan untuk memilih Pengelola Aplikasi.

7 — Klik Generate.

Sebuah API kunci 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

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

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

Menggunakan Kunci API App Store Connect

File Kunci API (file p8 yang kamu download), ID kunci, dan ID penggung adalah yang dibutuhkan untuk membuat token JWT untuk otorisasi. Ada beberapa cara untuk memasukkan informasi ini ke dalam Fastlane menggunakan aksi baru Fastlane. app_store_connect_api_keyKamu bisa mengetahui cara lainnya di Documentasi FastlaneKarena saya pikir ini adalah cara termudah untuk bekerja dengan CI yang paling umum, di mana Anda dapat menetapkan variabel lingkungan.

Sekarang kita bisa mengelola Fastlane dengan kunci App Store Connect API, hebat!

2. Salin file Fastlane

Fastlane adalah sebuah library Ruby yang dibuat untuk mengotomatisasi 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 dapat mengumpulkan 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"])

actions

yang melakukan tugas-tugas yang biasanya Anda lakukan menggunakan Android Studio. Anda dapat melakukan banyak hal dengan Fastlane, tetapi untuk tujuan tutorial ini, kita hanya akan menggunakan beberapa aksi inti. Buat folder Fastlane di root project Anda dan salin file-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.

Mulai 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?

Tentukan 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 disetel ke URL HTTPS repositori sertifikat. Jika diinginkan, Anda juga dapat menggunakan SSH, tetapi memerlukan langkah yang berbeda untuk dijalankan.

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

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

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

fastlane match appstore

Jika semuanya berjalan dengan baik, Anda seharusnya 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 ini pos artikel akan membantu Anda untuk menghasilkan token autentikasi untuk git.

Dokumen sertifikat dan profil provisioning yang dihasilkan diunggah ke repository sumber daya sertifikat

Sertifikat App Store Connect

Buka aplikasi project di Xcode, dan perbarui profil provisioning untuk konfigurasi rilis aplikasi Anda.

Sertifikat XCode

Beberapa hal yang perlu diperhatikan 💡

MATCH

Untuk CI/CD untuk mengimpor sertifikat dan profil provisioning, perlu memiliki akses ke repository sertifikat. Anda dapat melakukannya dengan menghasilkan token akses pribadi (harus digunakan sebelumnya) yang memiliki ruang lingkup untuk mengakses atau membaca repository pribadi.

In GitHub, go to PengaturanPengaturan PengembangToken akses pribadi → klik Generate New Token → centang repo scope → kemudian klik Generate token.

Buat Token akses pribadi

Sudah memiliki salinan token akses pribadi yang dihasilkan. Anda akan menggunakan itu 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)

File ini akan digunakan oleh GitHub Actions untuk mengimport sertifikat dan profil provisioning. Dan variabel akan ditetapkan di GitHub Rahasia, bukan dengan mengkodekan mereka secara keras di file.

Pengolahan Build

Di GitHub Actions, biaya Anda akan berdasarkan menit yang Anda gunakan untuk menjalankan alur kerja CI/CD Anda. Dari pengalaman, membutuhkan sekitar 10–15 menit sebelum build 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 biaya untuk proyek pribadi seperti saya, Anda dapat mempertahankan skip_waiting_for_build_processing ke true.

context":"Page/area: Live updates product page. Role: Short UI label or navigation item. Message key `live_update_dynamic_label_to` (Live Update Dynamic Label To)."

Apa yang menjadi masalahnya? Anda harus memperbarui komplian aplikasi Anda di App Store Connect setelah build telah diproses, agar Anda dapat mendistribusikan build ke pengguna Anda. Parameter ini adalah opsional untuk memperbarui jika Anda ingin menghemat menit build untuk proyek pribadi. Untuk proyek gratis, ini tidak akan menjadi masalah..

3. Setup GitHub Actions

3. Mengatur GitHub Actions

Konfigurasi __CAPGO_KEEP_0__ rahasia ENV Jika Anda pernah bertanya-tanya dari mana nilai-nilai dari __CAPGO_KEEP_0__ datang? 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 memiliki beberapa tim.

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

3. DEVELOPER_APP_IDENTIFIER - ID tim Portal Pengembang Anda jika Anda memiliki beberapa tim.

4. DEVELOPER_PORTAL_TEAM_ID - ID Apple atau alamat email pengembang yang Anda gunakan untuk mengelola aplikasi.

5. FASTLANE_APPLE_ID &amp;

6. GIT_USERNAME - Nama pengguna Git Anda dan token akses pribadi Anda. GIT_TOKEN - frasa rahasia yang Anda tentukan ketika menginisialisasi match, akan digunakan untuk mendekripsi sertifikat dan profil pengembangan.

7. MATCH_PASSWORD - ID tim Anda di App Store Connect jika Anda memiliki beberapa tim.

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

9. TEMP_KEYCHAIN_USER &amp; TEMP_KEYCHAIN_PASSWORD - menetapkan pengguna dan kata sandi kunci sementara untuk aliran 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, context: HTML fragment teks dari string Capgo UI yang lebih panjang (kunci induk `appflow_credentials_capgo_li1`). Halaman/area: Perbandingan/migrasi pemasaran Capflow. Peran: Item daftar bulat. Dilihat di: halaman ionic-appflow.astro. Simpan istilah produk/merek dan istilah pengembang Capgo secara tepat. Kunci pesan `appflow_credentials_capgo_li1` (Kredensial Capflow Li1). | Fragment teks HTML dari string Capgo UI yang lebih panjang (kunci induk `appflow_credentials_desc`). Halaman/area: Perbandingan/migrasi pemasaran Capflow. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman ionic-appflow.astro. Simpan istilah produk/merek dan istilah pengembang Capgo secara tepat. Kunci pesan `appflow_credentials_desc` (Kredensial Capflow Desc).

13. CERTIFICATE_STORE_URL periksa https://github.com/***/fastlane_match.git)

https://GitHub.com/***/fastlane_match.git

4. Mengonfigurasi GitHub file aliran kerja.

cd .github/workflows

Di dalam workflow folder, buatlah sebuah file bernama build-upload-ios.ymldan tambahkan kode berikut.

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 tagJika Anda memerlukan otomatisasi tag, silakan lihat Automatic build and release with GitHub actions actions

terlebih dahulu.

Lalu alur kerja ini akan menarik dependensi NodeJS Anda, menginstalnya, dan membangun aplikasi JavaScript Anda.

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.

Aplikasi Anda tidak perlu menggunakan Ionic, hanya dasar

Membuat Komit

Membuat komit, Anda harus melihat alur kerja aktif di repository.

Mengaktifkan alur kerja

Mengirimkan perubahan baru ke cabang main atau development context: Bagian teks HTML dari string Capgo UI yang lebih panjang (kunci induk `alternatives_cta_questions`). Halaman/area: Halaman perbandingan Caplive-update. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman alternatives.astro. Simpan produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `alternatives_cta_questions` (Pertanyaan Tindakan Alternatif). | Bagian teks HTML dari string Capgo UI yang lebih panjang (kunci induk `appflow_cta_questions`). Halaman/area: Halaman perbandingan/migrasi pemasaran Appflow. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman ionic-appflow.astro. Simpan produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `appflow_cta_questions` (Pertanyaan Tindakan Appflow). | Bagian teks HTML dari string Capgo UI yang lebih panjang (kunci induk `capwesome_cta_questions`). Halaman/area: Halaman perbandingan Capawesome. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman capwesome.astro. Simpan produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `capwesome_cta_questions` (Pertanyaan Tindakan Capwesome). | Bagian teks HTML dari string Capgo UI yang lebih panjang (kunci induk `consulting_faq_subtitle`). Halaman/area: Halaman layanan konsultasi. Peran: Judul atau tagline bagian. Dilihat di: halaman consulting.astro. Simpan produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `consulting_faq_subtitle` (Judul FAQ Konsultasi). | Halaman/area: Halaman perbandingan/migrasi pemasaran Appflow. Peran: Label UI singkat atau item navigasi. Dilihat di: halaman ionic-appflow.astro, halaman ionic-enterprise-plugins.astro, halaman solusi/ionic-enterprise-plugins.astro. Kunci pesan `appflow_plugins_or` (Appflow Plugins Atau).

Mengaktifkan alur kerja

Mengirimkan perubahan baru ke cabang

atau

Mengaktifkan alur kerja untuk mengaktifkan alur kerja ini.

Ya, kamu bisa, dan itu sangat mudah.

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

Mari kita lakukan itu

Pertama, kita perlu membuat file di my_project_path/fastlane berpath sebuah file bernama .env, di jalur yang sama dengan Fastfile, agar kita bisa membuat sifat rahasia yang sama seperti yang ada di ___CAPGO_KEEP_0__, seperti berikut: properti rahasia properties found in our _GitHub, a_s below:

File .env untuk mengdeploy dari mesin lokal

Sekarang, Anda dapat pergi ke terminal dan meluncurkan Fastlane dari mesin Anda: ❌ Hal penting tentang file .env, karena kami tidak ingin mengungkapkan data ini, kami harus menambahkannya ke .gitignore kami seperti itu: ❌ File ini harus berfungsi sama seperti yang terjadi dari __CAPGO_KEEP_0__ Actions pada mesin jarak jauh tetapi di mesin lokal kami. 🍻

fastlane closed_beta

file lingkungan (.env) untuk mengdeploy dari mesin lokal Sekarang, Anda dapat pergi ke terminal dan meluncurkan Fastlane dari mesin Anda: ❌ Hal penting tentang file .env, karena kami tidak ingin mengungkapkan data ini, kami harus menambahkannya ke .gitignore kamiseperti itu: ❌

fastlane/*.env

File ini harus berfungsi sama seperti yang terjadi dari GitHub Actions pada mesin jarak jauh tetapi di mesin lokal kami. 🍻

Jalankan Fastlane secara Lokal

Eksekusi Terminal: $ Fastlane closed_beta

Jika Anda telah mencapai tahap ini, saya ingin mengucapkan selamat, sekarang Anda memiliki proses otomatisasi yang lengkap untuk aplikasi iOS Anda dengan Fastlane dan GitHub.

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

Membangun di perangkat Anda

Jika Anda masih perlu membangun pada perangkat Anda, Anda perlu menambahkannya secara manual ke provisioning. Hubungkan perangkat Anda ke Mac Anda dan buka menu perangkat Cari perangkat iOS di menu Kemudian salin identifikator Anda Temukan Identifikasi iOS Lalu mulai perintah: fastlane register_new_device Akan meminta Anda untuk menetapkan nama perangkat dan identifier: atur identifier ios

jika kamu mengalami masalah

Jika kamu memiliki masalah dengan perangkat pengembang tidak dapat melakukan tes, dll, biasanya cara ini dapat memperbaikinya.

Ada perintah ajaib yang dapat menyelamatkan kamu:

fastlane match nuke development
fastlane match development

Kemudian : Bersihkan proyek dengan menekan Shift(⇧)+Command(⌘)+K atau memilih Product &gt; Bersihkan (mungkin terlabel sebagai “Bersihkan Folder Pembangunan”)

Kemudian coba jalankan aplikasi lagi pada perangkat kamu.

Saya berterima kasih

Artikel ini berdasarkan pada artikel berikut:

Teruskan dari Automatic Capacitor IOS build dengan GitHub aksi menggunakan match

Jika Anda menggunakan Automatic Capacitor Build iOS Otomatis dengan GitHub aksi menggunakan match untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo CI/CD untuk alur kerja produk di Capgo CI/CD, Capgo Build Nativ untuk alur kerja produk di Capgo Build Nativ, 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.

Pembaruan langsung untuk aplikasi Capacitor

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

Dukungan manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk menciptakan aplikasi mobile profesional yang sebenarnya.