Match (Fastlane) হল iOS-এর Code Signing সার্টিফিকেট এবং Provisioning Profiles পরিচালনার একটি টুল, যা সেগুলিকে একটি এনক্রিপ্টেড Git রিপোজিটরিতে সংরক্ষণ করে। Apple Developer Portal-এর মাধ্যমে ম্যানুয়াল ব্যবস্থাপনার বিপরীতে, Match সমস্ত ডেভেলপার এবং CI/CD সিস্টেম জুড়ে স্বাক্ষরের সিঙ্ক্রোনাইজেশন স্বয়ংক্রিয় করে। অফিসিয়াল Fastlane ডকুমেন্টেশন (2026) অনুসারে, Match iOS অ্যাপ্লিকেশন তৈরির সময় ভুল সার্টিফিকেট সম্পর্কিত 90% পর্যন্ত ত্রুটি দূর করে।
মুখ্য বিষয়
Match (Fastlane) হল Fastlane ইকোসিস্টেমের একটি উপাদান যা iOS ডেভেলপমেন্টের জন্য Code Signing সার্টিফিকেট এবং Provisioning Profiles-এর কেন্দ্রীভূত ব্যবস্থাপনার জন্য ডিজাইন করা হয়েছে। এটি টিম সদস্যদের মধ্যে স্বাক্ষরের সিঙ্ক্রোনাইজেশনের সমস্যা সমাধান করে এবং ডেভেলপার হস্তক্ষেপ ছাড়াই CI/CD পাইপলাইনে সার্টিফিকেট সেটআপ স্বয়ংক্রিয় করে।
Match ছাড়া, প্রতিটি টিম সদস্য Xcode বা Apple Developer Portal-এর মাধ্যমে ম্যানুয়ালি সার্টিফিকেট তৈরি করে, যা বিভিন্ন মেশিনে বিল্ড দ্বন্দ্বের সৃষ্টি করে। Code Signing হল একটি iOS অ্যাপ্লিকেশনে ডিজিটাল স্বাক্ষর করার প্রক্রিয়া, যা ব্যবহারকারীর ডিভাইসে ইনস্টলেশনের আগে এর লেখকত্ব এবং অখণ্ডতা নিশ্চিত করে।
Apple Developer ডকুমেন্টেশন (2025) অনুসারে, ভুল সার্টিফিকেট কনফিগারেশন App Store-এ অ্যাপ জমা দেওয়ার সময় প্রত্যাখ্যানের সবচেয়ে সাধারণ কারণগুলির মধ্যে একটি। Match স্বয়ংক্রিয়ভাবে সার্টিফিকেটের বৈধতা পরীক্ষা করে এবং মেয়াদোত্তীর্ণ সার্টিফিকেট সম্পর্কে সতর্ক করে, যা Apple যাচাইকরণ পর্যায়ে বিল্ড প্রত্যাখ্যানের ঝুঁকি হ্রাস করে।
দুই বা ততোধিক ডেভেলপার বা CI/CD পাইপলাইন থাকলে যেকোনো প্রকল্পে Match ব্যবহার করুন — এটি নতুন টিম সদস্যের পরিবেশ সেটআপের সময় 30 মিনিট থেকে একটি টার্মিনাল কমান্ডে কমিয়ে দেয়।
Match আর্কিটেকচার সমস্ত iOS টিম সার্টিফিকেটের জন্য একক সত্য উৎসের ধারণার উপর নির্মিত। প্রতিটি ডেভেলপারের কীচেইনে স্থানীয় স্টোরেজের পরিবর্তে, Match প্রতিটি ফাইল সংরক্ষণের আগে এনক্রিপশন সহ একটি একক Git রিপোজিটরিতে সার্টিফিকেট একীভূত করে।
প্রক্রিয়াটি তিনটি ধাপ নিয়ে গঠিত। আরম্ভকরণ পর্যায়ে, Match Apple Developer Portal API-এর মাধ্যমে সমস্ত প্রয়োজনীয় সার্টিফিকেট এবং প্রোফাইল তৈরি করে। প্রতিটি ফাইল ব্যবহারকারী-সংজ্ঞায়িত পাসফ্রেজ থেকে গঠিত একটি কী সহ AES-256 অ্যালগরিদম ব্যবহার করে এনক্রিপ্ট করা হয়। এনক্রিপ্টেড ফাইলগুলি Git রিপোজিটরিতে সংরক্ষিত হয় এবং স্ট্যান্ডার্ড Git push এবং pull অপারেশনের মাধ্যমে রিমোট সার্ভারের সাথে সিঙ্ক্রোনাইজ করা হয়।
Match সার্টিফিকেট এবং প্রোফাইল এনক্রিপ্ট করতে OpenSSL এবং ব্যবহারকারী-সংজ্ঞায়িত পাসফ্রেজের সংমিশ্রণ ব্যবহার করে। অ্যাক্সেস কী MATCH_PASSWORD এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে সেট করা হয় এবং রিপোজিটরিতে সংরক্ষণ করা হয় না, যা Git সার্ভারের সাথে আপস করা হলেও বা রিপোজিটরি পাবলিকভাবে অ্যাক্সেসযোগ্য হলেও লিক প্রতিরোধ করে।
সার্টিফিকেটের অনুরোধ করার সময়, Match রিপোজিটরি থেকে এনক্রিপ্টেড ফাইল ডাউনলোড করে, পাসফ্রেজ ব্যবহার করে স্থানীয়ভাবে ডিক্রিপ্ট করে এবং বর্তমান মেশিনের কীচেইনে ইনস্টল করে। বিল্ড সম্পূর্ণ হওয়ার পরে, কর্পোরেট পরিবেশের নিরাপত্তা নীতি মেনে চলতে সার্টিফিকেটগুলি কীচেইন থেকে সরানো যেতে পারে — এটি পরবর্তী বিল্ডে পুরানো সার্টিফিকেট ব্যবহার রোধ করে।
প্রতিটি সার্টিফিকেট অ্যাপ্লিকেশন আইডেন্টিফায়ার, প্রোফাইল টাইপ এবং তৈরি করার তারিখ সম্বলিত নামে সংরক্ষিত হয়। এই কাঠামো Match-কে সার্টিফিকেট সংস্করণ পরিচালনা করতে এবং প্রয়োজনে স্ট্যান্ডার্ড Git revert এবং reset কমান্ড ব্যবহার করে পূর্ববর্তী অবস্থায় পরিবর্তন ফিরিয়ে আনতে দেয়। এটি বিশেষভাবে কার্যকর যখন একটি প্রোফাইল দুর্ঘটনাক্রমে মুছে ফেলা বা ওভাররাইট করা হয়।
Match Ruby প্যাকেজ ম্যানেজারের মাধ্যমে Fastlane-এর সাথে ইনস্টল করা হয়: gem install fastlane। ইনস্টলেশনের পরে, fastlane match init কমান্ড দিয়ে সার্টিফিকেট স্টোরেজ আরম্ভ করুন, যা একটি খালি Git রিপোজিটরি তৈরি করে এবং একটি বেসিক কনফিগারেশন টেমপ্লেট সহ Matchfile জেনারেট করে।
# Match রিপোজিটরি আরম্ভ করুন
fastlane match init
Matchfile ফাইলে সার্টিফিকেট স্টোরেজের সমস্ত সংযোগ প্যারামিটার থাকে: Git রিপোজিটরি URL, ডিফল্ট প্রোফাইল টাইপ, অ্যাপ্লিকেশন আইডেন্টিফায়ার এবং Apple Developer credentials। পাঁচজন ডেভেলপারের টিমের জন্য একটি সাধারণ কনফিগারেশনের উদাহরণ:
# 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 App Store-এর বাইরে কর্পোরেট In-House বিতরণের জন্য। প্রতিটি টাইপ রিপোজিটরিতে একটি আলাদা ডিরেক্টরি তৈরি করে, যা লক্ষ্য বিল্ড পরিস্থিতি অনুযায়ী প্রোফাইল সংগঠিত করতে দেয়।
Match Apple Developer Portal-এর জন্য একাধিক প্রমাণীকরণ পদ্ধতি সমর্থন করে: Apple ID-এর মাধ্যমে দুই-ফ্যাক্টর প্রমাণীকরণ, অ্যাপ-নির্দিষ্ট পাসওয়ার্ড এবং 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 কমান্ড স্থানীয় ডিভাইসে ডিবাগিংয়ের জন্য ডেভেলপমেন্ট সার্টিফিকেট এবং প্রোফাইল ডাউনলোড বা তৈরি করে। Provisioning Profile হল Apple-এর একটি ডিজিটাল ডকুমেন্ট যা একটি ডেভেলপার সার্টিফিকেটকে অ্যাপ্লিকেশন আইডেন্টিফায়ার এবং ইনস্টলেশনের জন্য অনুমোদিত ডিভাইসের তালিকার সাথে যুক্ত করে।
App Store-এ প্রকাশের জন্য, fastlane match appstore ব্যবহার করুন — এটি ডিস্ট্রিবিউশন সার্টিফিকেট এবং 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 |
| 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 অ্যাকাউন্টে মাইগ্রেট করার সময় ব্যবহার করা হয়।
Match-এর CI/CD ইন্টিগ্রেশন টুলের মূল সুবিধাগুলির মধ্যে একটি। GitHub Actions, GitLab CI, Bitrise বা Jenkins পাইপলাইনে, Match ডেভেলপারের অংশগ্রহণ ছাড়াই স্বয়ংক্রিয়ভাবে সঠিক সার্টিফিকেট ডাউনলোড এবং ইনস্টল করে। এটি কমিট থেকে প্রস্তুত IPA পর্যন্ত iOS অ্যাপ্লিকেশনের সম্পূর্ণ স্বয়ংক্রিয় বিল্ড এবং স্বাক্ষর সক্ষম করে।
একটি সাধারণ GitHub Actions কনফিগারেশনে Fastlane ইনস্টল করা, MATCH_PASSWORD ভেরিয়েবল সেট করা এবং --readonly ফ্ল্যাগ সহ Match চালানো অন্তর্ভুক্ত। GitHub Actions হল GitHub-এর CI/CD প্ল্যাটফর্ম যা রিপোজিটরি ইভেন্টের ভিত্তিতে কোডের বিল্ড, পরীক্ষা এবং প্রকাশনা স্বয়ংক্রিয় করে।
# CI পরিবেশে Fastlane ইনস্টল করা
gem install fastlane --no-document
# পরিবর্তনের অধিকার ছাড়া শুধুমাত্র-পঠন মোডে Match চালানো
fastlane match development --readonly
CI-তে Match চালানোর আগে, সার্টিফিকেট রিপোজিটরিতে অ্যাক্সেস কনফিগার করুন। Fastlane স্বয়ংক্রিয়ভাবে Matchfile থেকে git_url প্যারামিটারের ভিত্তিতে এটি ক্লোন করে। রিপোজিটরি অ্যাক্সেস একটি SSH কী বা ব্যক্তিগত অ্যাক্সেস টোকনের মাধ্যমে কনফিগার করা হয়, যা CI সিস্টেমের সিক্রেটে যোগ করা হয় — এটি নিশ্চিত করে যে সার্টিফিকেটগুলি পাবলিক অ্যাক্সেসের মাধ্যমে আপস করা হবে না।
আপনার CI প্রদানকারীর সিক্রেটে MATCH_PASSWORD এবং FASTLANE_APPLE_API_KEY এনভায়রনমেন্ট ভেরিয়েবল সেট করুন। App Store Connect API কী Match-কে দুই-ফ্যাক্টর প্রমাণীকরণ ছাড়াই Apple Developer Portal-এ প্রমাণীকরণ করতে দেয়, যা স্বয়ংক্রিয় বিল্ডে ইন্টারঅ্যাকটিভ প্রম্পট দূর করে এবং পাইপলাইন ব্লক করা প্রতিরোধ করে।
সঠিক Match কনফিগারেশন থাকলেও, মেয়াদোত্তীর্ণ সার্টিফিকেট, প্রোফাইল দ্বন্দ্ব বা ভুল পরিবেশ সেটআপ সম্পর্কিত ত্রুটি ঘটতে পারে। Match সমস্যা নির্ণয় কমান্ড লগ বিশ্লেষণ এবং সার্টিফিকেট প্রাসঙ্গিকতার জন্য Git রিপোজিটরি অবস্থা পরীক্ষা করার উপর ভিত্তি করে।
সবচেয়ে সাধারণ ত্রুটি — «You need to provide a password for Match» — ঘটে যখন MATCH_PASSWORD এনভায়রনমেন্ট ভেরিয়েবল মেশিনে বা CI পরিবেশে সেট না থাকে। সমাধান: MATCH_PASSWORD সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলে যোগ করুন বা Match কমান্ড চালানোর সময় --keychain_password প্যারামিটারের মাধ্যমে পাসওয়ার্ড পাস করুন।
দ্বিতীয় সবচেয়ে সাধারণ সমস্যা হল AdHoc প্রোফাইলে নতুন ডিভাইস যোগ করার সময় সার্টিফিকেট দ্বন্দ্ব। এটি fastlane match adhoc --force কমান্ড দিয়ে সমাধান করা হয়, যা নতুন ডিভাইস বিবেচনায় নিয়ে প্রোফাইল পুনরায় তৈরি করে। Apple Developer সার্টিফিকেট এক বছরের জন্য বৈধ, তার পরে সেগুলি ব্যবহার করে বিল্ড App Store Connect দ্বারা প্রত্যাখ্যান করা হয়। Match বৈধতা সময় শেষ হওয়ার 30 দিন আগে মেয়াদোত্তীর্ণ সম্পর্কে সতর্ক করে।
যখন «Multiple matches found for...» ত্রুটি ঘটে, রিপোজিটরিতে একই সার্টিফিকেটের একাধিক সংস্করণ উপস্থিত থাকে। রিপোজিটরি সম্পূর্ণ পরিষ্কার করতে এবং Apple Developer Portal থেকে সমস্ত সার্টিফিকেট সরাতে fastlane match nuke কমান্ড ব্যবহার করুন। পরিষ্কারের পরে, নতুন করে জেনারেশন করুন — এটি ডুপ্লিকেট বা দ্বন্দ্বপূর্ণ সংস্করণ ছাড়াই একটি সামঞ্জস্যপূর্ণ প্রোফাইল অবস্থা নিশ্চিত করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Match Git-এ সংরক্ষণের আগে প্রতিটি সার্টিফিকেট ফাইল এনক্রিপ্ট করতে AES-256-CBC অ্যালগরিদম সহ OpenSSL ব্যবহার করে। এনক্রিপশন কী MATCH_PASSWORD পাসফ্রেজের উপর ভিত্তি করে গঠিত হয়। পাবলিক রিপোজিটরি অ্যাক্সেসের সাথেও, পাসওয়ার্ডের জ্ঞান ছাড়া সার্টিফিকেট অ্যাক্সেসযোগ্য থাকে না।
না, Match-এর এনক্রিপ্টেড সার্টিফিকেট সংরক্ষণের জন্য একটি Git রিপোজিটরি প্রয়োজন। তবে, মেশিনের মধ্যে সিঙ্ক্রোনাইজেশনের প্রয়োজন না হলে রিপোজিটরিটি স্থানীয় হতে পারে। এই ক্ষেত্রে, git_url প্যারামিটার রিমোট রিপোজিটরি URL-এর পরিবর্তে ফাইল সিস্টেমের একটি ডিরেক্টরিতে স্থানীয় পাথ নির্দিষ্ট করে।
দ্বন্দ্ব ঘটে যখন দুই ডেভেলপার একই সাথে ভিন্ন সার্টিফিকেট তৈরি করে। সমাধান হল রিপোজিটরি এবং Apple Developer Portal-এ সমস্ত সার্টিফিকেট সম্পূর্ণ পরিষ্কার করতে fastlane match nuke কমান্ড ব্যবহার করা। পরিষ্কারের পরে, একজন ডেভেলপার নতুন করে জেনারেশন করে এবং Git-এর মাধ্যমে সিঙ্ক্রোনাইজ করে।
Match স্টার্টআপে স্বয়ংক্রিয়ভাবে মেয়াদোত্তীর্ণ সার্টিফিকেট সনাক্ত করে এবং সেগুলি প্রতিস্থাপনের প্রস্তাব দেয়। জোর强制 নবায়নের জন্য, fastlane match [type] --force চালান — কমান্ড নির্দিষ্ট টাইপের সার্টিফিকেট এবং প্রোফাইল পুনরায় তৈরি করে এমনকি বিদ্যমানগুলি এখনও বৈধ থাকলেও, যা ডেভেলপার টিম পরিবর্তন করার সময় কার্যকর।
ম্যানুয়াল ব্যবস্থাপনার জন্য প্রতিটি মেশিনের জন্য আলাদাভাবে Xcode বা Developer Portal-এর মাধ্যমে সার্টিফিকেট তৈরি প্রয়োজন। Match স্টোরেজ কেন্দ্রীভূত করে, ডেটা এনক্রিপ্ট করে, এটি ডেভেলপার এবং CI/CD-এর মধ্যে সিঙ্ক্রোনাইজ করে এবং মানব হস্তক্ষেপ ছাড়াই স্বয়ংক্রিয়ভাবে সমস্ত স্বাক্ষরের বৈধতা এবং মেয়াদোত্তীর্ণতা পরীক্ষা করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন