Match (Fastlane) ابزاری برای مدیریت گواهیهای Code Signing و پروفایلهای Provisioning iOS است که آنها را در مخزن رمزگذاریشده Git ذخیره میکند. برخلاف مدیریت دستی از طریق Apple Developer Portal، Match همگامسازی امضاها را بین تمام توسعهدهندگان و سیستمهای CI/CD خودکار میکند. طبق مستندات رسمی Fastlane (2026)، Match تا 90٪ از خطاهای مربوط به گواهیهای نادرست در هنگام ساخت برنامههای iOS را برطرف میکند.
نکات کلیدی
Match (Fastlane) — جزئی از اکوسیستم Fastlane است که برای مدیریت متمرکز گواهیهای Code Signing و پروفایلهای Provisioning برای توسعه iOS طراحی شده است. این ابزار مشکل همگامسازی امضاها بین اعضای تیم را حل میکند و تنظیم گواهیها را در خطوط لوله CI/CD بدون دخالت توسعهدهنده خودکار میکند.
بدون Match، هر عضو تیم به صورت دستی از طریق Xcode یا Apple Developer Portal گواهی تولید میکند که منجر به تضادها در هنگام ساخت بر روی ماشینهای مختلف میشود. Code Signing — فرآیند امضای دیجیتالی برنامه iOS است که تألیف و یکپارچگی آن را قبل از نصب بر روی دستگاه کاربر تأیید میکند.
طبق مستندات Apple Developer (2025)، تنظیم نادرست گواهیها یکی از رایجترین دلایل رد شدن هنگام ارسال برنامه به App Store است. Match به طور خودکار اعتبار گواهیها را بررسی میکند و در مورد تاریخ انقضا هشدار میدهد که خطر رد شدن ساخت را در مرحله تأیید Apple کاهش میدهد.
از Match در هر پروژه با دو یا چند توسعهدهنده یا در حضور خط لوله CI/CD استفاده کنید — این کار زمان تنظیم محیط برای عضو جدید تیم را از 30 دقیقه به یک دستور در ترمینال کاهش میدهد.
معماری Match بر اساس مفهوم منبع واحد حقیقت برای تمام گواهیهای iOS تیم ساخته شده است. به جای ذخیره محلی در keychain هر توسعهدهنده، Match گواهیها را در یک مخزن Git با رمزگذاری هر فایل قبل از ذخیرهسازی ترکیب میکند.
فرآیند از سه مرحله تشکیل شده است. در مرحله راهاندازی، Match تمام گواهیها و پروفایلهای لازم را از طریق API Apple Developer Portal تولید میکند. هر فایل با الگوریتم 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
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 به طور خودکار گواهیها را از طریق API Apple Developer Portal ایجاد یا بهروزرسانی میکند و در مخزن ذخیره میکند. 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 از commit تا IPA آماده را فراهم میکند.
یک پیکربندی معمولی برای GitHub Actions شامل نصب Fastlane، تنظیم متغیر MATCH_PASSWORD و اجرای Match با پرچم --readonly است. GitHub Actions — پلتفرم CI/CD از GitHub است که ساخت، تست و انتشار کد را بر اساس رویدادهای مخزن خودکار میکند.
# نصب Fastlane در محیط CI
gem install fastlane --no-document
# اجرای Match در حالت فقط خواندنی بدون حق تغییر
fastlane match development --readonly
قبل از اجرای Match در CI، باید دسترسی به مخزن گواهیها را پیکربندی کنید. Fastlane به طور خودکار آن را بر اساس پارامتر git_url از Matchfile کلون میکند. دسترسی به مخزن از طریق کلید SSH یا personal access token که به اسرار سیستم CI اضافه میشوند پیکربندی میشود — این تضمین میکند که گواهیها از طریق دسترسی عمومی به خطر نیفتند.
متغیرهای محیطی MATCH_PASSWORD و FASTLANE_APPLE_API_KEY را در اسرار ارائهدهنده CI خود تنظیم کنید. کلید API App Store Connect به Match اجازه میدهد بدون احراز هویت دو مرحلهای در Apple Developer Portal احراز هویت کند که درخواستهای تعاملی را در ساختهای خودکار رد کرده و از مسدود شدن خط لوله جلوگیری میکند.
حتی با پیکربندی صحیح Match، ممکن است خطاهایی مربوط به انقضای گواهیها، تضاد پروفایلها یا پیکربندی نادرست محیط رخ دهد. تشخیص مشکلات Match بر اساس تحلیل logهای دستور و بررسی وضعیت مخزن 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید