Fastlane হল iOS এবং Android অ্যাপলিকেশনের বিল্ড, পরীক্ষা এবং প্রকাশন স্বচালিত করার জন্য একটি ওপেন সোর্স টুল। স্যাইন, বিল্ড এবং স্টোরে আপলোড করার জন্য ডজনের পর কমান্ড ম্যানুয়ালি চালানোর পরিবর্তে, ডেভেলপার Fastfile-এ সম্পূর্ণ প্রক্রিয়াটি বর্ণনা করে এবং একটি কমান্ডে চালু করে। Fastlane Docs, 2025 অনুযায়ী, টুলটি সারা বিশ্বে 1.5 মিলিয়নের অধিক প্রজেক্টে ব্যবহৃত হয়। Fastlane App Store Connect, Google Play Console এবং কোড সাইনিং সিস্টেমের জন্য ইউটিলিটি সমূহকে একত্রিত করে।
মূখ্য বিষয়
Fastlane হল Ruby তে লেখা এবং MIT লাইসেন্সে বিতরিত একটি মোবাইল বিল্ড স্বচালন টুল। এটি মোবাইল ডেভেলপারের রুটিন কাজগুলো স্বচালিত করে: অ্যাপলিকেশন বানানো, পরীক্ষা চালানো, স্ক্রিনশট তৈরি করা, কোড সাইন করা এবং App Store বা Google Play-এ বাইনারি আপলোড করা। 15–20টি ম্যানুয়াল কমান্ডের পরিবর্তে, ডেভেলপার দৃশ্যের নামে একটি মাত্র fastlane কমান্ড চালায়।
Fastlane Xcode ইউটিলিটি (xcodebuild, xcrun) এবং Android SDK (gradlew, apksigner, bundletool)এর উপর একটি র্যাপার হিসাবে কাজ করে, উভয় প্লেটফর্মের জন্য একটি ইউনিফাইড ইন্টারফেস প্রদান করে। এটি সেই টিমগুলোর জন্য বিশেষ মূল্যবান যারা একই অ্যাপের iOS এবং Android সংস্করণ বঞ্জায় রাখে — সমান Fastfile প্রাচলির মধ্যে সামান্য পার্থক্য সহ উভয় প্লেটফর্মের জন্য বিল্ড বর্ণনা করতে পারে।
GitHub অনুযায়ী, Fastlane-এর 39 হাজারের অধিক স্টার রয়েছে এবং এটি মোবাইল ডেভেলপমেন্টে স্বচালনের মান হলো। টুলটি কমিউনিটি এবং Google দ্বারা সমর্থিত — Fastlane Firebase-এ সমন্বিত হয়েছে Android অ্যাপলিকেশন Google Play Console-এ পাউছানোর একটি প্রশংসিত উপায় হিসাবে।
Fastlane আর্কিটেকচার তিনটি স্তরে নির্মিত: actions (মৌলিক কমান্ড), lanes (দৃশ্য) এবং টুলস (বিশেষায়িত ইউটিলিটি)। Actions হল Fastlane-এর পৃথক ফাংশন, প্রতিটি একটি নির্দিষ্ট কাজ করে: একটি স্ক্রিনশট তৈরি করা, একটি IPA বানানো, TestFlight-এ আপলোড করা। Lanes একটি Fastfile-এ বর্ণিত একটি ধারাবাহিক দৃশ্যে একাধিক actions সম্মিলিত করে।
Actions হল Fastlane-এর বিল্ডিং ব্লক। প্রতিটি action প্যারামিটার নেয় এবং একটি কাজ করে। উদাহরণস্বরূপ, action gym একটি iOS অ্যাপলিকেশন বানায়, scan পরীক্ষা চালায়, pilot TestFlight-এ একটি বিল্ড আপলোড করে। Fastlane-এ মোট 200এর অধিক বিল্ট-ইন actions রয়েছে, প্রতিটির ডকুমেন্টেশন fastlane action [নাম] কমান্ডের মাধ্যমে উপলব্ধ।
যদি বিল্ট-ইন actions যথেষ্ট না হয়, তবে ডেভেলপার Ruby-তে একটি কাস্টম action তৈরি করে Fastfile-এ সংযুক্ত করতে পারে। কাস্টম actions Fastlane প্লাগইনের মাধ্যমে বিতরিত হয়, যা Rubygems-এ প্রকাশিত হয় এবং প্রজেক্ট রুটে FastfilePlugin ফাইলের মাধ্যমে ইনস্টল করা হয়।
Lane হল একটি নামিত স্বচালন দৃশ্য যা একাধিক actions-কে একটি যুক্তির ধারায় সম্মিলিত করে। একটি lane অন্য লেন (private lanes) ডাকতে পারে, প্যারামিটার পাস করতে পারে এবং ত্রুটি হ্যান্ডিল করতে পারে। এটি দৃশ্যের একটি দ্রুমেলা তৈরি করতে দেয়: একটি বেস বিল্ড lane, একটি ডিপ্লোয় lane, একটি পূর্ণ CI/CD চক্র lane।
Fastlane-এ বিশেষায়িত টুলের একটি সেট অন্তর্ভুক্ত রয়েছে, প্রতিটি মোবাইল স্বচালনের একটি নির্দিষ্ট কাজ সমাধান করে। টুলগুলো lanes-এর মধ্যে actions হিসাবে বা সরাসরি কমান্ড লাইন থেকে চালানো হয়। আসুন iOS এবং Android-এর জন্য CI/CD-এর প্রধান চাহিদা পূরণ করে এমন চারটি মূল টুলের দিকে নাজ়র দেই।
| টুল | উদ্দেশ্য | কমান্ড |
|---|---|---|
| scan | iOS সিমুলেটরে Unit এবং UI পরীক্ষা চালানো | fastlane scan |
| gym | iOS-এর জন্য IPA বা APP ফাইল বানানো | fastlane gym |
| match | Git-এর মাধ্যমে সার্টিফিকেট এবং provisioning profiles সিংক করা | fastlane match |
| deliver | App Store Connect-এ বাইনারি এবং মেটাডেটা আপলোড করা | fastlane deliver |
| snapshot | বিভিন্ন ডিভাইসে স্বচালিত স্ক্রিনশট উত্পাদন | fastlane snapshot |
Scan Xcode পরীক্ষা চালানো সরল করে, স্বচালিতভাবে উপযুক্ত সিমুলেটর নির্বাচন করে এবং রিপোর্ট ফরম্যাট করে। Gym অপ্টিমাল কম্পিলেশন ফ্ল্যাগ সহ অ্যাপলিকেশন বানায় এবং বিভিন্ন বিল্ড ধরনের (development, adhoc, appstore) জন্য exportOptions.plist সমর্থন করে। Deliver একটি মাত্র মেটাডেটা ফাইলের মাধ্যমে শুধু বাইনারি নয়, বরং স্ক্রিনশট, বর্ণনা, সংস্করণ এবং মূল্য আপলোড করার অনুমতি দেয়।
Match টুলটি বিশেষ মনোযোগের দাবি করে — এটি টিমগুলোতে iOS সার্টিফিকেট সংরক্ষণ এবং সিংক করার সমস্যা সমাধান করে। Match সার্টিফিকেট এবং provisioning profiles এনক্রিপ্ট করে এবং একটি Git রিপোজিটরিতে সংরক্ষণ করে, এবং ডেভেলপাররা fastlane match চালালে স্বচালিতভাবে সেগুলো পেয়ে যায়। এটি প্রতিটি ওয়ার্কস্টেশনে ম্যানুয়াল সেটআপ দূর করে।
Snapshot বিভিন্ন ডিভাইস এবং ভাষায় একটি মোবাইল অ্যাপের স্ক্রিনশট স্বচালিতভাবে তৈরি করার একটি টুল। Snapshot iOS সিমুলেটরে UI পরীক্ষা চালায়, পরীক্ষার প্রতিটি ধাপে স্ক্রিনশট নেয়। ফলাফল fastlane/screenshots ডিরেক্টরিতে সংরক্ষিত হয় এবং deliver-এর মাধ্যমে App Store Connect-এ আপলোড করা যায়।
Android-এর জন্য, screengrab Android এমুলেটরে অনুরূপ কাজ করে। উভয় টুল লোকালাইজেশন সমর্থন করে — প্রতিটি ভাষার জন্য স্ক্রিনশট তৈরি করা হয়, যা বহুভাষিক অ্যাপ স্টোরে প্রকাশনের জন্য উপকরণ প্রস্তুতি সরল করে।
iOS প্রজেক্টের জন্য, Fastlane Gemfile (fastlane gem ইনস্টল করা) এবং fastlane ডিরেক্টরিতে Fastfile-এর মাধ্যমে কনফিগার করা হয়। প্রারম্ভিক সেটআপ fastlane init কমান্ডের মাধ্যমে করা হয়, যা মৌলিক ডিরেক্টরি স্ট্রাকচার তৈরি করে, App Store Connect ডেটা চায় এবং বেসিক lanes সহ একটি Fastfile টেমপ্লেট জেনারেট করে।
iOS-এর জন্য কী কমান্ড হল fastlane match, যা সার্টিফিকেট এবং provisioning profiles পেতে প্রথমে চালানো উচিত। সফল সাইনিংের পর, Fastlane অ্যাপলিকেশন বানাতে (gym), পরীক্ষা চালাতে (scan) এবং বাইনারি আপলোড (pilot বা deliver) করতে পারে।
# iOS অ্যাপের জন্য Fastfile
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'নতুন সংস্করণ TestFlight-এ আপলোড করা হয়েছে')
end
TestFlight-এর সাথে কাজ করতে pilot action ব্যবহার করুন — এটি IPA আপলোড করে এবং পরীক্ষকদের পরিচালনা করে। Fastlane upload_to_testflight (pilot-এর একটি প্রতিশব্দ) সমর্থন করে এবং Apple-এর বিল্ড প্রসেসিংয়ের অপেক্ষা স্বচালিতভাবে হ্যান্ডিল করে, যা 5 থেকে 30 মিনিট পর্যন্ত লাগতে পারে।
Android প্রজেক্টের জন্য, Fastlane অনুরূপভাবে কনফিগার করা হয়, কিন্তু Xcode টুলের পরিবর্তে Gradle এবং Android SDK ব্যবহৃত হয়। Android-এর জন্য Fastlane APK এবং AAB বানানো, apksigner বা jarsigner-এর মাধ্যমে সাইন করা, ইন্স্ট্রমেন্টেড পরীক্ষা চালানো এবং Supply action-এর মাধ্যমে Google Play Console-এ আপলোড করা সমর্থন করে।
মূল পার্থক্য হল Android বিল্ড match-এর মাধ্যমে সার্টিফিকেট পরিচালনার প্রয়োজন হয় না (Android সাইনিং Keystore-এর মাধ্যমে পরিচালিত হয়, যা আলাদাভাবে সংরক্ষিত হয়)। Android-এর জন্য Fastlane যে কোনো Gradle কাজ চালানোর জন্য gradle action এবং Google Play-এর সাথে কাজ করার জন্য supply action ব্যবহার করে।
# Android অ্যাপের জন্য Fastfile
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
Google Play Console-এর সাথে কাজ করতে Google Play API-এ অ্যাক্সেস সহ একটি Google Cloud সার্ভিস অকাউন্ট প্রয়োজন। Fastlane SUPPLY_JSON_KEY পরিবেশ ভেরিয়েবল বা supply action-এ json_key প্যারামিটারের মাধ্যমে সার্ভিস অকাউন্টের JSON কী গ্রহণ করে। প্রকাশন ট্র্যাক internal, alpha, beta বা production হতে পারে।
Fastlane যে কোনো CI/CD সিস্টেমের সাথে সংযুক্ত হতে পারে যা Ruby স্ক্রিপ্ট চালাতে পারে: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise এবং CircleCI। ইন্টিগ্রেশনের মধ্যে রয়েছে fastlane gem ইনস্টল করা এবং পাইপলাইনের script পর্যায়ে fastlane [lane_name] কমান্ড যোগ করা।
CI/CD-এর জন্য, সংবেদনশীল ডেটা সংরক্ষণের জন্য পরিবেশ ভেরিয়েবল সেট করা গুরুত্বপূর্ণ: MATCH_PASSWORD (সার্টিফিকেট এনক্রিপ্শন পাসওয়ার্ড), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (Apple ID পাসওয়ার্ড)। Travis CI-এ, ভেরিয়েবলগুলো travis encrypt-এর মাধ্যমে এনক্রিপ্ট করা হয়, GitHub Actions-এ Secrets রিপোজিটরির মাধ্যমে।
সুপারিশ করা অভ্যাস হল সার্টিফিকেট রিপোজিটরিতে আকস্মিক পরিবর্তন এড়াতে CI/CD-এ readonly ফ্ল্যাগ সহ fastlane match ব্যবহার করা। Android-এর জন্য, একটি পরিবেশ ভেরিয়েবলে সংরক্ষিত Base64-এনকোডেড Keystore ব্যবহার করুন, যা before_install পর্যায়ে ডিকোড করে একটি অস্থায়ী ফাইলে সংরক্ষণ করা হয়।
Fastlane Match হল iOS সার্টিফিকেট এবং provisioning profile পরিচালনা স্বচালিত করার একটি টুল, যা টিমগুলোর জন্য Fastlane-এর সবচেয়ে মূল্যবান বৈশিষ্ট্যগুলোর একটি। Match একটি এনক্রিপ্টেড Git রিপোজিটরি তৈরি করে (বা একটি বিদ্যমান ব্যবহার করে) যা সকল সার্টিফিকেট এবং প্রোফাইল সংরক্ষণ করে, ডেভেলপার এবং CI/CD সর্ভারের মধ্যে সিংক করে।
Match পাঁচটি প্রোফাইল ধরন সমর্থন করে: development, adhoc, appstore, enterprise এবং developer_id। প্রতিটি ধরন রিপোজিটরির মধ্যে একটি পৃথক ডিরেক্টরিতে সংরক্ষিত হয়। কমান্ড fastlane match development স্থানীয় মশিনে ডেভেলপমেন্ট সার্টিফিকেট ইনস্টল করে, যখন fastlane match appstore CI বিল্ডের জন্য App Store প্রোফাইল ইনস্টল করে।
# Fastfile-এ Match ব্যবহার
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
Match নিরাপত্তা Git-এ কমিট করার আগে সকল ফাইল এনক্রিপ্ট করে নিশ্চিত করা হয়। এনক্রিপ্শন পাসওয়ার্ড MATCH_PASSWORD পরিবেশ ভেরিয়েবলের মাধ্যমে সেট করা হয় এবং টিমের সকল সদস্যের জন্য একই হতে হবে। Match এনক্রিপ্শনের জন্য OpenSSL ব্যবহার করে এবং রিপোজিটরিতে পাসওয়ার্ড প্লেইন টেক্সটে সংরক্ষণ করে না।
সাধারণ প্রশ্নাবলী
Fastlane হল iOS এবং Android অ্যাপলিকেশনের জন্য একটি ওপেন সোর্স স্বচালন টুল। এটি একটি একক Fastfile কনফিগারেশন ফাইল এবং বিল্ট-ইন টুলের একটি সেটের মাধ্যমে বিল্ডিং, পরীক্ষা, কোড সাইনিং এবং App Store এবং Google Play-এ ডেলিভারি স্বচালিত করে।
Fastlane-এর প্রধান টুলস: scan (পরীক্ষা), gym (iOS বিল্ড), match (সার্টিফিকেট), deliver (App Store), pilot (TestFlight), snapshot (স্ক্রিনশট), supply (Google Play) এবং frameit (স্ক্রিনশট ফ্রেম)। প্রতিটি টুল একটি lane-এর মধ্যে action হিসাবে বা কমান্ড লাইন থেকে উপলব্ধ।
gem fastlane ইনস্টল করুন, প্রজেক্ট রুটে fastlane init চালান। বিল্ড (gym) এবং পরীক্ষা (scan) এর জন্য lanes সহ Fastfile কনফিগার করুন। একটি Git রিপোজিটরির মাধ্যমে সার্টিফিকেট পরিচালনার জন্য Match সেটআপ করুন। App Store Connect-এ আপলোডের জন্য pilot বা deliver সহ একটি ডিপ্লোয় lane যোগ করুন।
package name উল্লেখ করে fastlane init চালান। Gradle কাজ (assembleRelease, testReleaseUnitTest) চালাতে gradle action ব্যবহার করুন। পরিবেশ ভেরিয়েবলের মাধ্যমে Keystore কনফিগার করুন। পঞ্ছিত ট্র্যাকে Google Play Console-এ AAB বা APK আপলোড করতে supply action ব্যবহার করুন।
CI/CD সর্ভারে gem fastlane ইনস্টল করুন এবং পাইপলাইনের script পর্যায়ে fastlane [lane_name] কমান্ড যোগ করুন। CI/CD গোপন ভেরিয়েবলে FASTLANE_USER, FASTLANE_PASSWORD এবং MATCH_PASSWORD কনফিগার করুন। সার্টিফিকেটে আকস্মিক পরিবর্তন এড়াতে CI-এর জন্য match readonly ব্যবহার করুন।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন