Match (Fastlane) — је алат за управљање Code Signing сертификатима и Provisioning Profiles за iOS, који их чува у шифрованом Git репозиторијуму. За разлику од ручног управљања преко Apple Developer Portal-а, Match аутоматизује синхронизацију потписа између свих програмера и CI/CD система. Према званичној документацији Fastlane (2026), Match отклања до 90% грешака везаних за неисправне сертификате при изради iOS апликација.
Главно
Match (Fastlane) — је компонента Fastlane екосистема, намењена централизованом управљању Code Signing сертификатима и Provisioning Profiles-ом за iOS развој. Она решава проблем синхронизације потписа између чланова тима и аутоматизује подешавање сертификата у CI/CD цевоводима без учешћа програмера.
Без Match-а, сваки члан тима ручно генерише сертификате преко Xcode-а или Apple Developer Portal-а, што доводи до конфликата при изради на различитим машинама. Code Signing — је процес дигиталног потписивања iOS апликације, који потврђује њено ауторство и интегритет пре инсталације на уређај корисника.
Према Apple Developer Documentation (2025), неисправно подешавање сертификата је један од најчешћих разлога одбијања приликом слања апликације у App Store. Match аутоматски проверава валидност сертификата и упозорава на истицање рокова, чиме се смањује ризик од одбијања израде у фази Apple верификације.
Користите Match у сваком пројекту са два или више програмера или са CI/CD цевоводом — то ће смањити време подешавања окружења за новог члана тима са 30 минута на једну команду у терминалу.
Архитектура Match-а је изграђена на концепту јединственог извора истине за све сертификате iOS тима. Уместо локалног складиштења у кључаоници сваког програмера, Match обједињује сертификате у једном Git репозиторијуму са шифровањем сваке датотеке пре чувања.
Процес се састоји од три фазе. У фази иницијализације, Match генерише све потребне сертификате и профиле преко Apple Developer Portal API-ја. Свака датотека се шифрује алгоритмом AES-256 са кључем који се формира на основу корисничке лозинке. Шифроване датотеке се чувају у Git репозиторијуму и синхронизују са удаљеним сервером путем стандардних Git операција push и pull.
Match користи комбинацију OpenSSL и корисничке лозинке за шифровање сертификата и профила. Приступни кључ се задаје преко променљиве окружења MATCH_PASSWORD и не чува се у репозиторијуму, чиме се искључује цурење чак и при компромитовању Git сервера или јавном приступу репозиторијуму.
При захтеву за сертификат, Match учитава шифровану датотеку из репозиторијума, дешифрује је локално користећи лозинку и инсталира у Keychain тренутне машине. Након завршетка израде, сертификати се могу уклонити из Keychain-а ради поштовања сигурносних политика корпоративног окружења — ово спречава коришћење застарелих сертификата у наредним израдама.
Сваки сертификат се чува са именом које садржи идентификатор апликације, тип профила и датум креирања. Ова структура омогућава Match-у да управља верзијама сертификата и, по потреби, враћа претходно стање путем стандардних Git команди revert и reset. Ово је посебно корисно при случајном брисању или преписивању профила.
Инсталација Match-а се врши заједно са Fastlane-ом преко Ruby менаџера пакета: gem install fastlane. Након инсталације, потребно је иницијализовати складиште сертификата командом fastlane match init, која креира празан Git репозиторијум и генерише датотеку Matchfile са шаблоном основних подешавања.
# Иницијализација Match репозиторијума
fastlane match init
Датотека Matchfile садржи све параметре повезивања са складиштем сертификата: URL Git репозиторијума, подразумевани тип профила, идентификаторе апликација и акредитиве Apple Developer-а. Пример типичне конфигурације за тим од пет програмера:
# 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")
Параметар type одређује тип профила: :development за отклањање грешака на уређајима програмера, :appstore за објављивање у App Store-у, :adhoc за тестирање на спољним уређајима и :enterprise за корпоративну In-House дистрибуцију ван App Store-а. Сваки тип креира посебан директоријум у репозиторијуму, што омогућава организовање профила по циљним сценаријима израде.
Match подржава више начина аутентификације у Apple Developer Portal-у: двофакторска аутентификација преко Apple ID, App-Specific Password и API кључеви App Store Connect API-ја. За CI/CD се препоручује коришћење API кључева — они не захтевају интерактивни унос кода потврде и не блокирају аутоматске израде при промени уређаја програмера.
Након подешавања Matchfile-а, извршава се команда fastlane match development или fastlane match appstore за генерисање и синхронизацију профила. Match аутоматски креира или ажурира сертификате преко Apple Developer Portal API-ја и чува их у репозиторијуму. Apple Developer Portal — је Apple-ова веб интерфејс за управљање сертификатима, идентификаторима апликација и листом дозвољених уређаја програмера.
При првом покретању, Match ће затражити лозинку за шифровање репозиторијума. Ова лозинка мора бити сачувана у менаџеру тајни CI/CD (GitHub Actions Secrets, GitLab CI Variables или Jenkins Credentials) и прослеђена преко променљиве окружења MATCH_PASSWORD. Без ње, Match неће моћи да дешифрује сертификате на другим машинама или у CI окружењу.
Интерфејс Match-а се састоји од скупа команди за креирање, ажурирање, синхронизацију и брисање сертификата и профила. Свака команда одговара одређеној радњи у животном циклусу Code Signing-а: од генерисања до потпуног чишћења репозиторијума.
Команда fastlane match development учитава или креира Development сертификате и профиле за отклањање грешака на локалним уређајима. Provisioning Profile — је Apple-ов дигитални документ који повезује сертификат програмера са идентификатором апликације и листом уређаја дозвољених за инсталацију.
За објављивање у App Store-у користи се fastlane match appstore — она генерише Distribution сертификате и AppStore профиле. Команда fastlane match adhoc креира профиле за тестирање на спољним уређајима, а fastlane match enterprise — за корпоративне In-House апликације.
# Креирање Development профила за отклањање грешака
fastlane match development
# Креирање AppStore профила за издавање
fastlane match appstore
# Увоз постојећих ручно креираних сертификата
fastlane match import
Команда fastlane match import омогућава додавање у репозиторијум већ постојећих сертификата — корисно при миграцији са ручног управљања на Match. Параметар --readonly блокира све измене у репозиторијуму, што је критично за CI окружење, где цевовод не сме да креира или брише сертификате и профиле аутоматски.
| Match команда | Намена | Тип профила |
|---|---|---|
| match development | Креирање Development профила за отклањање грешака на уређајима | Development |
| match appstore | Креирање профила за објављивање у App Store-у | AppStore |
| match adhoc | Профили за спољно тестирање на уређајима бета тестера | AdHoc |
| match enterprise | Корпоративни профили за In-House дистрибуцију | Enterprise |
| match import | Увоз претходно креираних сертификата у репозиторијум | Било који |
За потпуно чишћење репозиторијума користи се команда fastlane match nuke. Она брише све сертификате из Git репозиторијума, из Apple Developer Portal-а и са локалне машине — то је потпуни ресет стања Code Signing-а за пројекат. Команда се примењује само при критичним конфликтима или при преласку на нови Apple Developer налог.
CI/CD интеграција Match-а — једна од кључних предности алата. У цевоводу GitHub Actions, GitLab CI, Bitrise или Jenkins, Match аутоматски учитава и инсталира исправне сертификате без учешћа програмера. Ово омогућава потпуно аутоматизовану израду и потписивање iOS апликације од комита до готовог IPA-а.
Типична конфигурација за GitHub Actions укључује инсталацију Fastlane-а, подешавање променљиве MATCH_PASSWORD и покретање Match-а са заставом --readonly. GitHub Actions — је CI/CD платформа од GitHub-а која аутоматизује израду, тестирање и објављивање кода на основу догађаја у репозиторијуму.
# Инсталација Fastlane у CI окружењу
gem install fastlane --no-document
# Покретање Match у read-only режиму без права измене
fastlane match development --readonly
Пре покретања Match-а у CI-ју, потребно је подесити приступ репозиторијуму сертификата. Fastlane аутоматски клонира репозиторијум на основу параметра git_url из Matchfile-а. Приступ репозиторијуму се подешава преко SSH кључа или personal access token-а, који се додају у тајне CI система — ово гарантује да сертификати неће бити компромитовани преко јавног приступа.
Подесите променљиве окружења MATCH_PASSWORD и FASTLANE_APPLE_API_KEY у тајнама вашег CI провајдера. App Store Connect API кључ омогућава Match-у да се аутентификује у Apple Developer Portal-у без двофакторске аутентификације, чиме се искључују интерактивни захтеви у аутоматским израдама и спречава блокирање цевовода.
Чак и при исправном подешавању Match-а могу настати грешке везане за истицање сертификата, конфликте профила или неисправну конфигурацију окружења. Дијагностика проблема Match-а се заснива на анализи дневника команде и провери стања Git репозиторијума сертификата на ажурност.
Најчешћа грешка — «You need to provide a password for Match» — настаје када променљива окружења MATCH_PASSWORD није постављена на машини или у CI окружењу. Решење: додајте MATCH_PASSWORD у променљиве окружења система или проследите лозинку преко параметра --keychain_password при покретању Match команде.
Други по учесталости проблем је конфликт сертификата при додавању новог уређаја у AdHoc профил. Решава се командом fastlane match adhoc --force, која поново креира профиле узимајући у обзир нове уређаје. Apple Developer сертификати важе једну годину, након чега израда са њиховим коришћењем бива одбијена од стране App Store Connect-а. Match упозорава на истицање 30 дана пре истека рока.
При грешци «Multiple matches found for...» у репозиторијуму постоји више верзија истог сертификата. Користите команду fastlane match nuke за потпуно чишћење репозиторијума и брисање свих сертификата из Apple Developer Portal-а. Након чишћења, извршите генерисање од нуле — ово гарантује конзистентно стање профила без дупликата и конфликтних верзија.
Често постављана питања
Match користи OpenSSL са AES-256-CBC алгоритмом за шифровање сваке датотеке сертификата пре чувања у Git-у. Кључ за шифровање се формира на основу лозинке MATCH_PASSWORD. Чак и при јавном приступу репозиторијуму, сертификати остају недоступни без познавања лозинке.
Не, Match захтева Git репозиторијум за чување шифрованих сертификата. Међутим, репозиторијум може бити локалан ако синхронизација између машина није потребна. У том случају, у параметру git_url наводи се локална путања до директоријума на систему датотека уместо URL-а удаљеног репозиторијума.
Конфликти настају када два програмера истовремено генеришу различите сертификате. Решење — користите команду fastlane match nuke за потпуно чишћење свих сертификата у репозиторијуму и Apple Developer Portal-у. Након чишћења, један програмер врши генерисање од нуле и синхронизује преко Git-а.
Match аутоматски открива истекле сертификате при покретању и предлаже њихову замену. За принудно ажурирање извршите fastlane match [type] --force — команда поново креира сертификате и профиле наведеног типа, чак и ако постојећи још увек важе, што је корисно при промени тима програмера.
Ручно управљање захтева генерисање сертификата преко Xcode-а или Developer Portal-а за сваку машину посебно. Match централизује складиштење, шифрује податке, синхронизује их између програмера и CI/CD-а, као и аутоматски проверава валидност и рокове трајања свих потписа без учешћа човека.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође