Match (Fastlane) to narzędzie do zarządzania certyfikatami Code Signing i Provisioning Profiles iOS, które przechowuje je w zaszyfrowanym repozytorium Git. W przeciwieństwie do ręcznego zarządzania przez Apple Developer Portal, Match automatyzuje synchronizację podpisów między wszystkimi programistami i systemami CI/CD. Według oficjalnej dokumentacji Fastlane (2026), Match eliminuje do 90% błędów związanych z nieprawidłowymi certyfikatami przy budowaniu aplikacji iOS.
Najważniejsze
Match (Fastlane) to komponent ekosystemu Fastlane przeznaczony do centralnego zarządzania certyfikatami Code Signing i Provisioning Profiles dla programowania iOS. Rozwiązuje problem synchronizacji podpisów między członkami zespołu i automatyzuje konfigurację certyfikatów w pipeline'ach CI/CD bez udziału programisty.
Bez Match każdy członek zespołu ręcznie generuje certyfikaty przez Xcode lub Apple Developer Portal, co prowadzi do konfliktów przy budowaniu na różnych maszynach. Code Signing to proces cyfrowego podpisywania aplikacji iOS, który potwierdza jej autorstwo i integralność przed instalacją na urządzeniu użytkownika.
Według Apple Developer Documentation (2025), nieprawidłowa konfiguracja certyfikatów jest jedną z najczęstszych przyczyn odrzucenia przy wysyłaniu aplikacji do App Store. Match automatycznie sprawdza ważność certyfikatów i ostrzega o wygasających terminach, co zmniejsza ryzyko odrzucenia kompilacji na etapie weryfikacji Apple.
Używaj Match w każdym projekcie z dwoma lub więcej programistami lub przy obecności pipeline'u CI/CD — skróci to czas konfiguracji środowiska nowego członka zespołu z 30 minut do jednej komendy w terminalu.
Architektura Match opiera się na koncepcji pojedynczego źródła prawdy dla wszystkich certyfikatów iOS zespołu. Zamiast lokalnego przechowywania w pęku kluczy każdego programisty, Match łączy certyfikaty w jednym repozytorium Git z szyfrowaniem każdego pliku przed zapisaniem.
Proces składa się z trzech etapów. Na etapie inicjalizacji Match generuje wszystkie niezbędne certyfikaty i profile przez API Apple Developer Portal. Każdy plik jest szyfrowany algorytmem AES-256 z kluczem utworzonym na podstawie hasła użytkownika. Zaszyfrowane pliki są zapisywane w repozytorium Git i synchronizowane z serwerem zdalnym przez standardowe operacje Git push i pull.
Match używa kombinacji OpenSSL i hasła użytkownika do szyfrowania certyfikatów i profili. Klucz dostępu jest ustawiany przez zmienną środowiskową MATCH_PASSWORD i nie jest przechowywany w repozytorium, co eliminuje wyciek nawet przy kompromitacji serwera Git lub publicznym dostępie do repozytorium.
Przy żądaniu certyfikatu Match pobiera zaszyfrowany plik z repozytorium, odszyfrowuje go lokalnie za pomocą hasła i instaluje w Keychain bieżącej maszyny. Po zakończeniu kompilacji certyfikaty mogą zostać usunięte z Keychain w celu przestrzegania polityk bezpieczeństwa środowiska korporacyjnego — zapobiega to używaniu przestarzałych certyfikatów w kolejnych kompilacjach.
Każdy certyfikat jest zapisywany z nazwą zawierającą identyfikator aplikacji, typ profilu i datę utworzenia. Taka struktura pozwala Match zarządzać wersjami certyfikatów i w razie potrzeby wycofywać zmiany do poprzedniego stanu za pomocą standardowych komend Git revert i reset. Jest to szczególnie przydatne przy przypadkowym usunięciu lub nadpisaniu profilu.
Instalacja Match odbywa się razem z Fastlane przez menedżer pakietów Ruby: gem install fastlane. Po instalacji należy zainicjalizować repozytorium certyfikatów komendą fastlane match init, która tworzy puste repozytorium Git i generuje plik Matchfile z szablonem podstawowych ustawień.
# Inicjalizacja repozytorium Match
fastlane match init
Plik Matchfile zawiera wszystkie parametry połączenia z repozytorium certyfikatów: URL repozytorium Git, domyślny typ profili, identyfikatory aplikacji i dane uwierzytelniające Apple Developer. Przykład typowej konfiguracji dla zespołu pięciu programistów:
# 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")
Parametr type określa typ profili: :development do debugowania na urządzeniach programistów, :appstore do publikacji w App Store, :adhoc do testowania na zewnętrznych urządzeniach i :enterprise do dystrybucji korporacyjnej In-House poza App Store. Każdy typ tworzy oddzielny katalog w repozytorium, co pozwala organizować profile według docelowych scenariuszy kompilacji.
Match obsługuje kilka sposobów uwierzytelniania w Apple Developer Portal: uwierzytelnianie dwuskładnikowe przez Apple ID, App-Specific Password i klucze API App Store Connect API. Dla CI/CD zaleca się używanie kluczy API — nie wymagają one interaktywnego wprowadzania kodu potwierdzenia i nie blokują automatycznych kompilacji przy zmianie urządzenia programisty.
Po skonfigurowaniu Matchfile wykonuje się komendę fastlane match development lub fastlane match appstore w celu wygenerowania i synchronizacji profili. Match automatycznie tworzy lub aktualizuje certyfikaty przez API Apple Developer Portal i zapisuje je w repozytorium. Apple Developer Portal to interfejs webowy Apple do zarządzania certyfikatami, identyfikatorami aplikacji i listą dozwolonych urządzeń programistów.
Przy pierwszym uruchomieniu Match poprosi o hasło do szyfrowania repozytorium. To hasło powinno być przechowywane w menedżerze sekretów CI/CD (GitHub Actions Secrets, GitLab CI Variables lub Jenkins Credentials) i przekazane przez zmienną środowiskową MATCH_PASSWORD. Bez niego Match nie będzie w stanie odszyfrować certyfikatów na innych maszynach lub w środowisku CI.
Interfejs Match składa się z zestawu komend do tworzenia, aktualizacji, synchronizacji i usuwania certyfikatów oraz profili. Każda komenda odpowiada określonej czynności w cyklu życia Code Signing: od generacji do całkowitego czyszczenia repozytorium.
Komenda fastlane match development pobiera lub tworzy certyfikaty Development i profile do debugowania na lokalnych urządzeniach. Provisioning Profile to cyfrowy dokument Apple, który łączy certyfikat programisty z identyfikatorem aplikacji i listą dozwolonych do instalacji urządzeń.
Do publikacji w App Store używa się fastlane match appstore — generuje certyfikaty Distribution i profile AppStore. Komenda fastlane match adhoc tworzy profile do testowania na zewnętrznych urządzeniach, a fastlane match enterprise — dla aplikacji korporacyjnych In-House.
# Tworzenie profili Development do debugowania
fastlane match development
# Tworzenie profili AppStore do wydania
fastlane match appstore
# Import istniejących ręcznie certyfikatów
fastlane match import
Komenda fastlane match import pozwala dodać do repozytorium już istniejące certyfikaty — przydatne przy migracji z ręcznego zarządzania na Match. Parametr --readonly blokuje wszelkie zmiany w repozytorium, co jest krytyczne dla środowiska CI, gdzie pipeline nie powinien tworzyć ani usuwać certyfikatów i profili automatycznie.
| Komenda Match | Przeznaczenie | Typ profilu |
|---|---|---|
| match development | Tworzenie profili Development do debugowania na urządzeniach | Development |
| match appstore | Tworzenie profili do publikacji w App Store | AppStore |
| match adhoc | Profile do zewnętrznego testowania na urządzeniach beta-testerów | AdHoc |
| match enterprise | Profile korporacyjne do dystrybucji In-House | Enterprise |
| match import | Import wcześniej utworzonych certyfikatów do repozytorium | Dowolny |
Do całkowitego czyszczenia repozytorium używa się komendy fastlane match nuke. Usuwa ona wszystkie certyfikaty z repozytorium Git, z Apple Developer Portal i z lokalnej maszyny — to całkowity reset stanu Code Signing dla projektu. Komenda jest stosowana tylko przy krytycznych konfliktach lub przy przejściu na nowe konto Apple Developer.
Integracja CI/CD Match to jedna z kluczowych zalet narzędzia. W pipeline GitHub Actions, GitLab CI, Bitrise lub Jenkins Match automatycznie pobiera i instaluje prawidłowe certyfikaty bez udziału programisty. Pozwala to zrealizować w pełni zautomatyzowane budowanie i podpisywanie aplikacji iOS od commita do gotowego IPA.
Typowa konfiguracja dla GitHub Actions obejmuje instalację Fastlane, ustawienie zmiennej MATCH_PASSWORD i uruchomienie Match z flagą --readonly. GitHub Actions to platforma CI/CD od GitHub, która automatyzuje budowanie, testowanie i publikację kodu na podstawie zdarzeń w repozytorium.
# Instalacja Fastlane w środowisku CI
gem install fastlane --no-document
# Uruchomienie Match w trybie tylko do odczytu bez praw do zmian
fastlane match development --readonly
Przed uruchomieniem Match w CI należy skonfigurować dostęp do repozytorium certyfikatów. Fastlane automatycznie klonuje je na podstawie parametru git_url z Matchfile. Dostęp do repozytorium konfiguruje się przez klucz SSH lub personal access token, które są dodawane do sekretów systemu CI — gwarantuje to, że certyfikaty nie zostaną skompromitowane przez otwarty dostęp.
Skonfiguruj zmienne środowiskowe MATCH_PASSWORD i FASTLANE_APPLE_API_KEY w sekretach swojego dostawcy CI. Klucz API App Store Connect pozwala Match uwierzytelnić się w Apple Developer Portal bez uwierzytelniania dwuskładnikowego, co eliminuje interaktywne zapytania w automatycznych kompilacjach i zapobiega blokowaniu pipeline'u.
Nawet przy prawidłowej konfiguracji Match mogą występować błędy związane z wygaśnięciem certyfikatów, konfliktami profili lub nieprawidłową konfiguracją środowiska. Diagnostyka problemów Match opiera się na analizie logów komendy i sprawdzeniu stanu repozytorium Git certyfikatów pod kątem aktualności.
Najczęstszy błąd — „You need to provide a password for Match„ — występuje, gdy zmienna środowiskowa MATCH_PASSWORD nie jest ustawiona na maszynie lub w środowisku CI. Rozwiązanie: dodać MATCH_PASSWORD do zmiennych środowiskowych systemu lub przekazać hasło przez parametr --keychain_password przy uruchamianiu komendy Match.
Drugi pod względem częstotliwości problem — konflikt certyfikatów przy dodawaniu nowego urządzenia do profilu AdHoc. Rozwiązuje się go komendą fastlane match adhoc --force, która odtwarza profile z uwzględnieniem nowych urządzeń. Apple Developer certyfikaty są ważne jeden rok, po czym kompilacja z ich użyciem jest odrzucana przez App Store Connect. Match ostrzega o wygaśnięciu na 30 dni przed końcem terminu.
Przy błędzie „Multiple matches found for...„ w repozytorium znajduje się kilka wersji tego samego certyfikatu. Użyj komendy fastlane match nuke do całkowitego czyszczenia repozytorium i usunięcia wszystkich certyfikatów z Apple Developer Portal. Po czyszczeniu wykonaj generację od nowa — gwarantuje to spójny stan profili bez duplikatów i konfliktujących wersji.
Często zadawane pytania
Match używa OpenSSL z algorytmem AES-256-CBC do szyfrowania każdego pliku certyfikatu przed zapisaniem w Git. Klucz szyfrowania jest tworzony na podstawie hasła MATCH_PASSWORD. Nawet przy publicznym dostępie do repozytorium certyfikaty pozostają niedostępne bez znajomości hasła.
Nie, Match wymaga repozytorium Git do przechowywania zaszyfrowanych certyfikatów. Jednak repozytorium może być lokalne, jeśli synchronizacja między maszynami nie jest wymagana. W takim przypadku w parametrze git_url podaje się ścieżkę lokalną do katalogu w systemie plików zamiast URL zdalnego repozytorium.
Konflikty występują, gdy dwóch programistów jednocześnie generuje różne certyfikaty. Rozwiązanie — użyj komendy fastlane match nuke do całkowitego czyszczenia wszystkich certyfikatów w repozytorium i w Apple Developer Portal. Po czyszczeniu jeden programista wykonuje generację od nowa i synchronizuje przez Git.
Match automatycznie wykrywa wygasłe certyfikaty przy uruchomieniu i proponuje ich wymianę. Do wymuszonego odnowienia wykonaj fastlane match [type] --force — komenda odtwarza certyfikaty i profile określonego typu, nawet jeśli istniejące są jeszcze ważne, co jest przydatne przy zmianie zespołu programistów.
Ręczne zarządzanie wymaga generowania certyfikatów przez Xcode lub Developer Portal dla każdej maszyny osobno. Match centralizuje przechowywanie, szyfruje dane, synchronizuje je między programistami i CI/CD, a także automatycznie sprawdza ważność i terminy wygaśnięcia wszystkich podpisów bez udziału człowieka.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również