Automatic Builds iOS dengan GitHub Aksi menggunakan Match
Pengaturan CI/CD untuk aplikasi Capacitor dapat kompleks dan memakan waktu. Berikut adalah apa yang perlu Anda ketahui:
Dianjurkan untuk Pembangunan Baru: Gunakan Capgo Build
Sekarang kami merekomendasikan menggunakan Capgo Build dengan Capgo CLI untuk pembangunan native Capacitor. Petunjuk Panduan Fastlane Match 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 yang ditandatangani secara native dari pipeline CI/CD Anda:
- Kompatibel dengan pipeline Anda: Trigger Capgo Build dari GitHub Actions, GitLab CI, Jenkins, atau skrip lokal setelah build 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.
- : __CAPGO_KEEP_0__ Build menyediakan lingkungan build Apple yang diperbarui, sehingga Anda tidak perlu mengelola runner macOS, gambar Xcode, Fastlane, atau repositori Match.: Capgo Build provides maintained Apple build environments, so you do not have to manage macOS runners, Xcode images, Fastlane, or Match repositories.
- : Unduh artikel yang ditandatangani untuk QA atau kirimkan build rilis melalui __CAPGO_KEEP_0__ __CAPGO_KEEP_1__.: Download signed artifacts for QA or submit release builds through the Capgo CLI.
: Rencana __CAPGO_KEEP_0__ mulai dari $12/bulan.
- Capgo plans start at $12/month
- : Menit tambahan build dikenakan biaya per menit melalui kredit.
- : Atur __CAPGO_KEEP_0__ Build di CI/CD
: Capgo plans start at $12/month
Petunjuk Pengaturan Manual
Berikut langkah-langkah yang perlu Anda lakukan:
Pengiriman Terus-menerus untuk iOS menggunakan Fastlane dan GitHub Aksi menggunakan match
Prasyarat
Sebelum melanjutkan dengan tutorial...
- Pastikan Anda telah menginstal Fastlane pada mesin pengembangan Anda. Anggota program pengembang iOS.
- Kepada yang ingin membaca 😆...
- Sebuah tim banyak dev, jika tidak, kami merekomendasikan untuk menggunakan
- fastlane cert Pengaturan Terus-menerus untuk iOS menggunakan Fastlane dan __CAPGO_KEEP_0__ Aksi menggunakan match untuk alur kerja yang lebih sederhana.
Perlu diingat tentang harga.

https://github.com/features/actions
Pelayanan ini gratis hingga batas tertentu, tergantung pada mesin yang dipilih.
Kita akan menggunakan sebuah mesin macOS mesin, Anda dapat melihat di screenshot harga dan batasan (harga sesuai dengan pembuatan tutorial, mereka mungkin mengalami perubahan di masa depan)
🔴 Setelah diingatkan tentang persyaratan dan harga, jika Anda suka, kita melanjutkan…
📣 Dalam pos ini kita asumsikan bahwa kita telah memiliki aplikasi yang dibuat di iTunes connect, kita memiliki sertifikat dari ekosistem Apple, semuanya akan dicopy oleh Fastlane!
Mari kita mulai menjelajahi…
Langkah-langkah yang perlu diikuti dalam pos ini
- Memakai App Store Connect API dengan Fastlane Match
- Persyaratan
- Membuat Kunci App Store Connect API
- Menggunakan Kunci App Store Connect API
- Menggandakan File Fastlane
- 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.
- ID Penerbit.
- ID Kunci.
- File Kunci atau Konten Kunci.
Membuat Kunci App Store Connect API
To membuat 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.

3 — Pilih tab Integrasi.

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

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

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 peran. Kami merekomendasikan untuk memilih Pengelola Aplikasi.
7 — Klik Generate.
Kunci API tidak dapat dibatasi aksesnya hanya untuk aplikasi tertentu.
Nama kunci baru, ID kunci, tautan download, dan informasi lainnya muncul di halaman.

Anda dapat mengambil semua tiga 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 termasuk kunci di code sisi klien.
Menggunakan Kunci API App Store Connect
File Kunci API (file p8 yang Anda download), ID kunci, dan ID penggugat diperlukan untuk membuat token JWT untuk otorisasi. Ada beberapa cara untuk memasukkan informasi ini ke dalam Fastlane menggunakan aksi baru Fastlane. app_store_connect_api_keyAnda dapat mengetahui cara lainnya di Dokumentasi FastlaneKarena saya pikir ini adalah cara termudah untuk bekerja dengan CI yang paling umum, di mana Anda dapat menyetel variabel lingkungan.
Sekarang kita bisa mengelola Fastlane dengan kunci App Store Connect API, hebat!
2. Salin file-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_matchfile harus diset ke URL HTTPS repositori sertifikat. Jika Anda ingin menggunakan SSH, Anda harus melakukan langkah tambahan.
# 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 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 ini pos akan membantu Anda untuk menghasilkan token autentikasi untuk git.
Surat-surat pengakuan dan profil pengaturan yang dihasilkan diunggah ke repositori sumber daya

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

Beberapa hal yang perlu diperhatikan 💡
MATCH
MATCH
In GitHub, go to Dalam __CAPGO_KEEP_0__, buka → Pengaturan → Token akses pribadi → klik Generate New Token → centang repo scope → kemudian klik Generate token.

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)
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 diset di __CAPGO_KEEP_1__ Rahasia, bukan dengan mengkodekan mereka secara keras di file.
In GitHub Actions, Di __CAPGO_KEEP_0__ Actions, Anda dikenakan biaya berdasarkan menit yang digunakan untuk menjalankan alur kerja CI/CD Anda. Dari pengalaman, membutuhkan sekitar 10–15 menit sebelum sebuah 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 seperti saya untuk proyek pribadi, Anda dapat mempertahankan skip_waiting_for_build_processing ke true.
context: Halaman/area: Halaman produk Capgo untuk update live. Peran: Label UI singkat atau item navigasi. Kunci pesan `live_update_dynamic_label_to` (Live Update Dynamic Label To).
Apa yang menjadi masalahnya? Anda harus memperbarui kompatibilitas aplikasi Anda di App Store Connect setelah build telah diproses, agar Anda dapat mendistribusikan build ke pengguna Anda. ini adalah parameter opsional untuk memperbarui jika Anda ingin menghemat menit build untuk proyek pribadi. Untuk proyek gratis, ini tidak akan menjadi masalah..
3. Setup GitHub Actions
Configure GitHub secrets
biaya ENV 3. Mengatur __CAPGO_KEEP_0__ Actions

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 &
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 App Store Connect Anda 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 & 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, context: HTML fragment teks dari string Capgo UI yang lebih panjang (kunci induk `appflow_credentials_capgo_li1`). Halaman/area: Perbandingan/migrasi pemasaran Capgo untuk Appflow. 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 Appflow Capgo Li1). | Fragment teks HTML dari string Capgo UI yang lebih panjang (kunci induk `appflow_credentials_desc`). Halaman/area: Perbandingan/migrasi pemasaran Capgo untuk Appflow. 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 Appflow Desc).
13. CERTIFICATE_STORE_URL periksa https://github.com/***/fastlane_match.git)
https://GitHub.com/***/fastlane_match.git
4. Konfigurasi file alur kerja GitHub .
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
Ini adalah alur kerja yang harus diaktifkan setelah setiap GitHub tag, jika Anda membutuhkan untuk mengotomatisasi tag, silakan lihat Automatic build dan release dengan GitHub actions terlebih dahulu.
Kemudian, alur kerja ini akan menarik dependensi NodeJS, menginstalnya, dan membangun aplikasi JavaScript Anda.
Setiap kali Anda mengirimkan commit baru, rilis akan dibangun di TestFlight.
Aplikasi Anda tidak perlu menggunakan Ionic, hanya Capacitor dasar yang wajib, dan dapat memiliki modul Cordova lama, tetapi Capacitor plugin JavaScript lebih disarankan.
5. Aktifkan alur kerja
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 dari teks HTML dari string Capgo UI yang lebih panjang (kunci induk `alternatives_cta_questions`). Halaman/area: Halaman perbandingan alternatif Capacitor. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman alternatives.astro. Simpan Capgo produk/merek dan istilah pengembang secara tepat. Kunci pesan `alternatives_cta_questions` (Pertanyaan Tindakan Alternatif). | Bagian dari 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 Capgo produk/merek dan istilah pengembang secara tepat. Kunci pesan `appflow_cta_questions` (Pertanyaan Tindakan Appflow). | Bagian dari 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 Capgo produk/merek dan istilah pengembang secara tepat. Kunci pesan `capwesome_cta_questions` (Pertanyaan Tindakan Capwesome). | Halaman/area: Halaman jasa konsultasi. Peran: Judul atau tagline bagian. Dilihat di: halaman consulting.astro. Simpan Capgo produk/merek dan istilah pengembang 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).

Membuat Komit

komit yang baru setelah beberapa menit, hasil build harus tersedia di dashboard App Store Connect Anda.
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 path yang sama dengan Fastfile, agar kita bisa membuat sifat rahasia yang sama seperti yang ada di ___CAPGO_KEEP_0__, seperti yang terlihat di bawah ini: properties found in our _GitHub, a_s below:
.file konfigurasi lingkungan untuk mengdeploy dari mesin lokal
Sekarang, Anda dapat pergi ke terminal dan meluncurkan Fastlane dari mesin Anda:
fastlane closed_beta
❌ Penting tentang file konfigurasi lingkungan karena kita tidak ingin mengungkapkan data ini, kita harus menambahkannya di file .gitignoreseperti itu: ❌
fastlane/*.env
It should work the same as it happens from GitHub Actions on the remote machine but in our local machine. 🍻

Eksekusi terminal: $ Fastlane closed_beta
Selamat, Anda telah mencapai langkah ini, sekarang Anda memiliki proses otomatis penuh untuk aplikasi iOS Anda dengan Fastlane dan GitHub Actions.
Masing-masing kali Anda mengirimkan commit 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 ke martin@capgo.app
Bangun pada perangkat Anda
Jika Anda masih perlu membangun pada perangkat, Anda perlu menambahkannya secara manual ke provisioning.
Cari menu perangkat iOS
Cari identifier iOS
fastlane register_new_device
Dan kemudian mulai perintah:

Jika Anda mengalami masalah
Jika Anda memiliki masalah dengan perangkat pengembang tidak dapat diuji, dll, biasanya masalah ini dapat diatasi.
Ada perintah ajaib yang dapat menyelamatkan Anda:
fastlane match nuke development
fastlane match development
Kemudian : Bersihkan proyek dengan menekan Shift(⇧)+Command(⌘)+K atau memilih Product > Bersihkan (mungkin terlabel sebagai “Bersihkan Folder Pembangunan”)
Kemudian coba jalankan aplikasi lagi pada perangkat Anda.
Saya berterima kasih
Artikel ini berdasarkan pada artikel berikut:
- Pengiriman terus-menerus untuk IOS menggunakan Fastlane dan GitHub aksi
- Dokumentasi Fastlane
- Pesan GitHub ini dari @mrogunlana
Keep going from Automatic Capacitor IOS build with GitHub actions using match
If Anda menggunakan Automatic Capacitor Build Otomatis iOS dengan GitHub aksi menggunakan match untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo Otomatisasi CI/CD untuk alur kerja produk di Capgo Otomatisasi CI/CD, Capgo Build Natively untuk alur kerja produk di Capgo Build Natively, 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.