Match (Fastlane) — este un instrument pentru gestionarea certificatelor Code Signing și a profilelor Provisioning iOS, care le stochează într-un depozit Git criptat. Spre deosebire de gestionarea manuală prin Apple Developer Portal, Match automatizează sincronizarea semnăturilor între toți dezvoltatorii și sistemele CI/CD. Conform documentației oficiale Fastlane (2026), Match elimină până la 90% din erorile legate de certificatele incorecte la compilarea aplicațiilor iOS.
Principalele aspecte
Match (Fastlane) — este o componentă a ecosistemului Fastlane, destinată gestionării centralizate a certificatelor Code Signing și a profilelor Provisioning pentru dezvoltarea iOS. Aceasta rezolvă problema sincronizării semnăturilor între membrii echipei și automatizează configurarea certificatelor în pipeline-urile CI/CD fără implicarea dezvoltatorului.
Fără Match, fiecare membru al echipei generează manual certificate prin Xcode sau Apple Developer Portal, ceea ce duce la conflicte la compilarea pe diferite mașini. Code Signing — este procesul de semnare digitală a aplicației iOS, care confirmă autorul și integritatea acesteia înainte de instalarea pe dispozitivul utilizatorului.
Conform Apple Developer Documentation (2025), configurarea incorectă a certificatelor este una dintre cele mai frecvente cauze de respingere la trimiterea aplicației în App Store. Match verifică automat validitatea certificatelor și avertizează despre termenele de expirare, ceea ce reduce riscul de respingere a compilării la etapa de verificare Apple.
Folosiți Match în orice proiect cu doi sau mai mulți dezvoltatori sau cu un pipeline CI/CD — aceasta va reduce timpul de configurare a mediului pentru un nou membru al echipei de la 30 de minute la o singură comandă în terminal.
Arhitectura Match este construită pe conceptul unei singure surse de adevăr pentru toate certificatele echipei iOS. În locul stocării locale în keychain-ul fiecărui dezvoltator, Match unifică certificatele într-un singur depozit Git cu criptarea fiecărui fișier înainte de salvare.
Procesul constă din trei etape. La etapa de inițializare, Match generează toate certificatele și profilele necesare prin API-ul Apple Developer Portal. Fiecare fișier este criptat cu algoritmul AES-256 cu o cheie formată pe baza unei fraze de parolă personalizată. Fișierele criptate sunt salvate în depozitul Git și sincronizate cu serverul la distanță prin operațiile standard Git push și pull.
Match utilizează o combinație de OpenSSL și o frază de parolă personalizată pentru criptarea certificatelor și profilelor. Cheia de acces se setează prin variabila de mediu MATCH_PASSWORD și nu se stochează în depozit, ceea ce exclude scurgerile chiar și la compromiterea serverului Git sau la accesul public la depozit.
La solicitarea unui certificat, Match încarcă fișierul criptat din depozit, îl decriptează local folosind fraza de parolă și îl instalează în Keychain-ul mașinii curente. După finalizarea compilării, certificatele pot fi eliminate din Keychain pentru respectarea politicilor de securitate ale mediului corporativ — aceasta previne utilizarea certificatelor învechite în compilările următoare.
Fiecare certificat este salvat cu un nume care conține identificatorul aplicației, tipul profilului și data creării. Această structură permite Match să gestioneze versiunile certificatelor și, la nevoie, să revină la starea anterioară prin comenzile standard Git revert și reset. Acest lucru este util în special la ștergerea sau suprascrierea accidentală a unui profil.
Instalarea Match se realizează împreună cu Fastlane prin managerul de pachete Ruby: gem install fastlane. După instalare, este necesară inițializarea depozitului de certificate prin comanda fastlane match init, care creează un depozit Git gol și generează fișierul Matchfile cu un șablon al setărilor de bază.
# Inițializarea depozitului Match
fastlane match init
Fișierul Matchfile conține toți parametrii de conectare la depozitul de certificate: URL-ul depozitului Git, tipul profilurilor implicite, identificatorii aplicațiilor și datele de autentificare Apple Developer. Un exemplu de configurare tipică pentru o echipă de cinci dezvoltatori:
# Matchfile configuration
git_url("https://github.com/company/certificates.git")
type(:development)
app_identifier(["com.company.app", "com.company.app.extension"])
username("developer@company.com")
team_id("TEAM123456")
git_branch("main")
Parametrul type definește tipul profilurilor: :development pentru depanarea pe dispozitivele dezvoltatorilor, :appstore pentru publicarea în App Store, :adhoc pentru testarea pe dispozitive externe și :enterprise pentru distribuția corporativă In-House în afara App Store. Fiecare tip creează un director separat în depozit, ceea ce permite organizarea profilurilor pe scenarii țintă de compilare.
Match acceptă mai multe metode de autentificare în Apple Developer Portal: autentificare cu doi factori prin Apple ID, App-Specific Password și chei API App Store Connect API. Pentru CI/CD se recomandă utilizarea cheilor API — acestea nu necesită introducerea interactivă a codului de confirmare și nu blochează compilările automate la schimbarea dispozitivului dezvoltatorului.
După configurarea Matchfile, se execută comanda fastlane match development sau fastlane match appstore pentru generarea și sincronizarea profilurilor. Match creează sau actualizează automat certificatele prin API-ul Apple Developer Portal și le salvează în depozit. Apple Developer Portal — este interfața web Apple pentru gestionarea certificatelor, identificatorilor de aplicații și listei de dispozitive permise ale dezvoltatorilor.
La prima lansare, Match va solicita fraza de parolă pentru criptarea depozitului. Această frază trebuie salvată în managerul de secrete CI/CD (GitHub Actions Secrets, GitLab CI Variables sau Jenkins Credentials) și transmisă prin variabila de mediu MATCH_PASSWORD. Fără ea, Match nu va putea decripta certificatele pe alte mașini sau în mediul CI.
Interfața Match constă dintr-un set de comenzi pentru crearea, actualizarea, sincronizarea și ștergerea certificatelor și profilurilor. Fiecare comandă corespunde unei anumite acțiuni în ciclul de viață al Code Signing: de la generare până la curățarea completă a depozitului.
Comanda fastlane match development încarcă sau creează certificate și profiluri Development pentru depanarea pe dispozitive locale. Provisioning Profile — este un document digital Apple care leagă certificatul dezvoltatorului de identificatorul aplicației și lista dispozitivelor permise pentru instalare.
Pentru publicarea în App Store se utilizează fastlane match appstore — care generează certificate Distribution și profiluri AppStore. Comanda fastlane match adhoc creează profiluri pentru testarea pe dispozitive externe, iar fastlane match enterprise — pentru aplicații corporative In-House.
# Crearea profilelor Development pentru depanare
fastlane match development
# Crearea profilelor AppStore pentru lansare
fastlane match appstore
# Importarea certificatelor existente manual
fastlane match import
Comanda fastlane match import permite adăugarea în depozit a certificatelor existente — utilă la migrarea de la gestionarea manuală la Match. Parametrul --readonly blochează orice modificare în depozit, ceea ce este critic pentru mediul CI, unde pipeline-ul nu trebuie să creeze sau să șteargă certificate și profiluri automat.
| Comanda Match | Destinație | Tipul profilului |
|---|---|---|
| match development | Crearea profilurilor Development pentru depanarea pe dispozitive | Development |
| match appstore | Crearea profilurilor pentru publicarea în App Store | AppStore |
| match adhoc | Profiluri pentru testarea externă pe dispozitivele testerilor beta | AdHoc |
| match enterprise | Profiluri corporative pentru distribuția In-House | Enterprise |
| match import | Importul certificatelor create anterior în depozit | Oricare |
Pentru curățarea completă a depozitului se utilizează comanda fastlane match nuke. Aceasta șterge toate certificatele din depozitul Git, din Apple Developer Portal și de pe mașina locală — o resetare completă a stării Code Signing pentru proiect. Comanda se aplică doar la conflicte critice sau la migrarea pe un nou cont Apple Developer.
Integrarea CI/CD Match — unul dintre avantajele cheie ale instrumentului. În pipeline-ul GitHub Actions, GitLab CI, Bitrise sau Jenkins, Match încarcă și instalează automat certificatele corecte fără implicarea dezvoltatorului. Aceasta permite realizarea unei compilări și semnări complet automatizate a aplicației iOS de la commit până la IPA-ul final.
O configurare tipică pentru GitHub Actions include instalarea Fastlane, setarea variabilei MATCH_PASSWORD și lansarea Match cu stegul --readonly. GitHub Actions — este o platformă CI/CD de la GitHub care automatizează compilarea, testarea și publicarea codului pe baza evenimentelor din depozit.
# Instalarea Fastlane în mediul CI
gem install fastlane --no-document
# Pornirea Match în modul read-only fără drept de modificare
fastlane match development --readonly
Înainte de lansarea Match în CI, este necesară configurarea accesului la depozitul de certificate. Fastlane clonează automat depozitul pe baza parametrului git_url din Matchfile. Accesul la depozit se configurează printr-o cheie SSH sau un personal access token, care se adaugă în secretele sistemului CI — aceasta garantează că certificatele nu vor fi compromise prin acces public.
Configurați variabilele de mediu MATCH_PASSWORD și FASTLANE_APPLE_API_KEY în secretele furnizorului dvs. CI. Cheia API App Store Connect permite Match să se autentifice în Apple Developer Portal fără autentificare cu doi factori, ceea ce exclude solicitările interactive în compilările automate și previne blocarea pipeline-ului.
Chiar și la configurarea corectă a Match pot apărea erori legate de expirarea certificatelor, conflicte de profiluri sau configurarea incorectă a mediului. Diagnosticarea problemelor Match se bazează pe analiza jurnalelor comenzii și verificarea stării depozitului Git al certificatelor pentru actualitate.
Cea mai frecventă eroare — «You need to provide a password for Match» — apare atunci când variabila de mediu MATCH_PASSWORD nu este setată pe mașină sau în mediul CI. Soluție: adăugați MATCH_PASSWORD în variabilele de mediu ale sistemului sau transmiteți parola prin parametrul --keychain_password la lansarea comenzii Match.
A doua problemă ca frecvență este conflictul certificatelor la adăugarea unui nou dispozitiv în profilul AdHoc. Se rezolvă prin comanda fastlane match adhoc --force, care recreatează profilurile ținând cont de noile dispozitive. Apple Developer certificatele sunt valabile un an, după care compilarea cu utilizarea lor este respinsă de App Store Connect. Match avertizează despre expirare cu 30 de zile înainte de termen.
La eroarea «Multiple matches found for...» în depozit sunt prezente mai multe versiuni ale aceluiași certificat. Utilizați comanda fastlane match nuke pentru curățarea completă a depozitului și ștergerea tuturor certificatelor din Apple Developer Portal. După curățare, efectuați generarea de la zero — aceasta garantează o stare consistentă a profilurilor fără duplicate și versiuni conflictuale.
Întrebări frecvente
Match utilizează OpenSSL cu algoritmul AES-256-CBC pentru criptarea fiecărui fișier de certificat înainte de salvarea în Git. Cheia de criptare se formează pe baza frazei de parolă MATCH_PASSWORD. Chiar și la accesul public la depozit, certificatele rămân inaccesibile fără cunoașterea parolei.
Nu, Match necesită un depozit Git pentru stocarea certificatelor criptate. Totuși, depozitul poate fi local, dacă sincronizarea între mașini nu este necesară. În acest caz, în parametrul git_url se specifică o cale locală către un director pe sistemul de fișiere în locul URL-ului depozitului la distanță.
Conflictele apar atunci când doi dezvoltatori generează simultan certificate diferite. Soluția — utilizați comanda fastlane match nuke pentru curățarea completă a tuturor certificatelor din depozit și din Apple Developer Portal. După curățare, un dezvoltator efectuează generarea de la zero și sincronizează prin Git.
Match detectează automat certificatele expirate la lansare și propune înlocuirea lor. Pentru actualizarea forțată, executați fastlane match [type] --force — comanda recreatează certificatele și profilurile de tipul specificat, chiar dacă cele existente sunt încă valabile, ceea ce este util la schimbarea echipei de dezvoltatori.
Gestionarea manuală necesită generarea certificatelor prin Xcode sau Developer Portal pentru fiecare mașină separat. Match centralizează stocarea, criptează datele, le sincronizează între dezvoltatori și CI/CD, precum și verifică automat validitatea și termenele de expirare ale tuturor semnăturilor fără implicarea umană.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și