CI/CD (Continuous Integration / Continuous Delivery) হল প্রতিটি কোড পরিবর্তনের সাথে স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন বিল্ড, টেস্ট এবং ডেলিভার করার অনুশীলন। Statista (2025) অনুযায়ী, 80% মোবাইল ডেভেলপমেন্ট টিম তাদের কাজে CI/CD ব্যবহার করে। এই নিবন্ধটি জনপ্রিয় CI টুল, মোবাইল বিল্ড অটোমেশনের জন্য Fastlane, সেইসাথে Canary Release এবং Feature Flags কভার করে।
মূল শিক্ষা
Continuous Integration মোবাইল অ্যাপের জন্য CI/CD অটোমেশনের ভিত্তি। এটি একটি অনুশীলন যেখানে প্রতিটি ডেভেলপার দিনে কয়েকবার তাদের কোড একটি শেয়ার্ড রিপোজিটরিতে মার্জ করে। প্রতিটি push-এর পরে, CI সার্ভার স্বয়ংক্রিয়ভাবে প্রকল্পটি বিল্ড করে এবং টেস্ট চালায়। যদি টেস্ট ব্যর্থ হয়, বিল্ডটি ভাঙা বলে বিবেচিত হয় এবং টিম অবিলম্বে সমস্যাটি ঠিক করে। CI «আমার মেশিনে কাজ করে» পরিস্থিতি প্রতিরোধ করে যেখানে একজন ডেভেলপারের কোড অন্যের কোড ভেঙে দেয়।
Build Pipeline — প্রতিটি push-এ সম্পাদিত ধাপের একটি ক্রম: কোড লিন্টিং → ইউনিট টেস্ট → debug APK/IPA বিল্ড → ইন্টিগ্রেশন টেস্ট → release বিল্ড। প্রতিটি ধাপ আগেরটি সফল হওয়ার পরেই চলে। বিল্ড আর্টিফ্যাক্ট — APK, IPA, AAB, টেস্ট রিপোর্ট — সংরক্ষিত হয় এবং ডাউনলোডের জন্য উপলব্ধ থাকে।
Continuous Delivery — কোড স্বয়ংক্রিয়ভাবে বিল্ড এবং টেস্ট হয়, কিন্তু প্রোডাকশনে রিলিজ করার সিদ্ধান্ত একজন মানুষ নেয়। Continuous Deployment — প্রতিটি সফল বিল্ড স্বয়ংক্রিয়ভাবে প্রোডাকশনে রিলিজ হয়। মোবাইল অ্যাপের জন্য, TestFlight বা Internal Testing-এর মাধ্যমে CD (স্টোরে ডেলিভারি) বেশি সাধারণ, কারণ প্রকাশের চূড়ান্ত সিদ্ধান্ত ডেভেলপার বা ম্যানেজার নেয়। Staging — প্রোডাকশনের যতটা সম্ভব কাছাকাছি পরিবেশ, রিলিজের আগে বিল্ড টেস্ট করতে ব্যবহৃত হয়।
GitHub Actions GitHub-এ মোবাইল অ্যাপ অটোমেট করার জন্য একটি বিল্ট-ইন CI/CD সিস্টেম। Actions পাইপলাইন বর্ণনা করতে YAML কনফিগারেশন (.github/workflows) ব্যবহার করে। মোবাইল ডেভেলপমেন্টের জন্য রেডিমেড অ্যাকশন উপলব্ধ: actions/setup-java, Android-এর জন্য gradle-build-action, iOS-এর জন্য xcodebuild-action। GitHub Actions প্রাইভেট রিপোজিটরির জন্য মাসে 2000 ফ্রি মিনিট প্রদান করে।
উদাহরণ: Android ওয়ার্কফ্লোতে কোড চেকআউট, JDK 17 সেটআপ, Gradle ডিপেন্ডেন্সি ক্যাশিং, lint এবং ইউনিট টেস্ট, APK বিল্ড এবং আর্টিফ্যাক্ট আপলোড অন্তর্ভুক্ত। iOS-এর জন্য — চেকআউট, Xcode সেটআপ, pod install, XCTest রান, আর্কাইভ এবং IPA এক্সপোর্ট। GitHub Actions নোটিফিকেশনের জন্য GitHub Releases, Slack এবং Telegram-এর সাথে ইন্টিগ্রেটেড।
GitLab CI GitLab-এ একটি বিল্ট-ইন CI/CD সিস্টেম, .gitlab-ci.yml-এর মাধ্যমে কনফিগার করা হয়। GitLab CI runners ব্যবহার করে — এজেন্ট যারা কাজ সম্পাদন করে। মোবাইল ডেভেলপমেন্টের জন্য আপনি শেয়ার্ড runners (Android-এর জন্য Linux) বা নিজস্ব runners (iOS-এর জন্য macOS) ব্যবহার করতে পারেন। GitLab CI সমান্তরাল কাজ, আর্টিফ্যাক্ট, এনভায়রনমেন্ট এবং প্রোডাকশন রিলিজের জন্য ম্যানুয়াল অনুমোদন সমর্থন করে।
Bitrise একটি CI/CD প্ল্যাটফর্ম যা মোবাইল অ্যাপ অটোমেশনে বিশেষজ্ঞ। Bitrise Android, iOS, Flutter এবং React Native-এর জন্য রেডিমেড Steps অফার করে: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install। Bitrise স্বয়ংক্রিয়ভাবে iOS-এর জন্য কোড সাইনিং কনফিগার করে (Codesigndoc-এর মাধ্যমে) এবং প্রি-ইনস্টল করা Xcode, Android SDK, Flutter এবং অন্যান্য টুল সহ ভার্চুয়াল মেশিন প্রদান করে।
Bitrise সুবিধা: ভিজুয়াল Workflow এডিটরের মাধ্যমে সহজ সেটআপ, সমান্তরাল বিল্ডের জন্য সমর্থন, Firebase Test Lab, App Store Connect এবং Google Play Console-এর সাথে ইন্টিগ্রেশন। Bitrise ব্যক্তিগত প্রকল্পের জন্য মাসে 90 ফ্রি মিনিট প্রদান করে। IT Sectr-এ আমরা সব মোবাইল প্রকল্পের জন্য Bitrise ব্যবহার করি — এটি ম্যানুয়াল GitHub Actions সেটআপের তুলনায় CI/CD উল্লেখযোগ্যভাবে সহজ করে।
| মাপকাঠি | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| বিশেষজ্ঞতা | সাধারণ | সাধারণ | মোবাইল | সাধারণ |
| iOS-এর জন্য macOS | হ্যাঁ (macOS runner) | নিজস্ব runner | হ্যাঁ (বিল্ট-ইন) | হ্যাঁ (macOS) |
| ফ্রি সীমা | 2000 মিনিট/মাস | 400 মিনিট/মাস | 90 মিনিট/মাস | 6000 মিনিট/মাস |
| Fastlane ইন্টিগ্রেশন | run script-এর মাধ্যমে | run script-এর মাধ্যমে | রেডিমেড Step | run script-এর মাধ্যমে |
| Code Signing | ম্যানুয়াল সেটআপ | ম্যানুয়াল সেটআপ | স্বয়ংক্রিয় | Fastlane-এর মাধ্যমে |
| সমান্তরাল বিল্ড | হ্যাঁ | হ্যাঁ | হ্যাঁ | হ্যাঁ |
Fastlane iOS এবং Android-এর জন্য একটি মোবাইল অ্যাপ অটোমেশন টুল, যা Ruby-তে লেখা। Fastlane-এ রেডিমেড অ্যাকশনের (200+) একটি সিস্টেম এবং Fastfile-এর মাধ্যমে দৃশ্যকল্প বর্ণনা করার জন্য DSL রয়েছে। Fastlane সেই কাজগুলি সমাধান করে যা প্রতিটি মোবাইল ডেভেলপার ম্যানুয়ালি করে: কোড সাইনিং, স্ক্রিনশট জেনারেশন, TestFlight এবং Google Play-তে আপলোড, সার্টিফিকেট এবং প্রোভিজনিং প্রোফাইল ম্যানেজমেন্ট।
Lane — Fastfile-এ একটি নামযুক্ত দৃশ্যকল্প। উদাহরণ: lane :release do — রিলিজ প্রকাশের জন্য কর্মের শৃঙ্খল। Match — একটি এনক্রিপ্টেড Git রিপোজিটরির মাধ্যমে সার্টিফিকেট এবং প্রোভিজনিং প্রোফাইল নিরাপদে সংরক্ষণ এবং সিঙ্ক করার টুল। Gym — iOS অ্যাপ বিল্ড এবং আর্কাইভ করা (xcodebuild-এর উপর একটি র্যাপার)। Pilot — TestFlight-এ বিল্ড আপলোড এবং ম্যানেজমেন্ট। Deliver — App Store Connect-এ অ্যাপ এবং মেটাডেটা আপলোড। Snapshot — সব ভাষায় স্বয়ংক্রিয় স্ক্রিনশট জেনারেশন। Screengrab — Android-এর জন্য স্বয়ংক্রিয় স্ক্রিনশট জেনারেশন।
Android-এর জন্য Fastfile উদাহরণ: lane :beta gradle (assembleRelease) কল করে, তারপর টেস্টারদের বিতরণের জন্য firebase_app_distribution। iOS-এর জন্য: lane :beta match (সার্টিফিকেট ডাউনলোড), gym (আর্কাইভ) এবং pilot (TestFlight-এ আপলোড) কল করে। Fastlane লোকালি এবং CI সার্ভারে চলতে পারে — এটি যেকোনো মোবাইল প্রকল্পে একটি ইউনিভার্সাল টুল করে তোলে।
Canary Release পূর্ণ রিলিজের আগে ব্যবহারকারীদের একটি ছোট শতাংশে (1–5%) অ্যাপের নতুন ভার্সন রোলআউট করার একটি CI/CD অটোমেশন কৌশল। Google Play Console-এ এটি Staged Rollout-এর মাধ্যমে বাস্তবায়িত হয়: আপনি আপনার 5% দর্শকের কাছে আপডেট প্রকাশ করেন, ক্র্যাশ এবং মেট্রিক্স মনিটর করেন এবং কোনও সমস্যা না থাকলে শতাংশ বাড়ান। App Store Connect-এ — Phased Release for Automatic Updates-এর মাধ্যমে।
A/B Testing — এলোমেলো ব্যবহারকারী গ্রুপের উপর একটি ফিচারের দুটি ভার্সনের তুলনা করা। মোবাইল ডেভেলপমেন্টে, A/B টেস্ট Feature Flags, Firebase Remote Config বা সার্ভার-সাইড লজিকের মাধ্যমে পরিচালিত হয়। Canary Release এবং A/B টেস্ট নতুন ফিচার রোলআউট করার সময় ঝুঁকি কমায়।
Feature Flag (Feature Toggle) — নতুন কোড ডিপ্লয় না করেই কার্যকারিতার শর্তসাপেক্ষ সক্রিয়করণ। Feature Flag কোডে একটি চেক: if (featureFlag.isEnabled()) { /* নতুন কোড */ } else { /* পুরানো কোড */ }. ফ্ল্যাগগুলি সার্ভিসের মাধ্যমে পরিচালিত হয়: LaunchDarkly, Split.io, Firebase Remote Config। Feature Flags ডেভেলপারদের main-এ কোড মার্জ করতে দেয়, এমনকি যদি ফিচারটি এখনও ব্যবহারকারীদের জন্য প্রস্তুত না হয়।
LaunchDarkly — সবচেয়ে জনপ্রিয় Feature Flags ম্যানেজমেন্ট প্ল্যাটফর্ম। LaunchDarkly iOS, Android, Flutter এবং React Native-এর জন্য SDK প্রদান করে। আপনি নির্দিষ্ট ব্যবহারকারী, সেগমেন্ট, অঞ্চল বা দর্শকের শতাংশের জন্য ফিচার সক্রিয় করতে পারেন। Feature Flags kill switch হিসেবেও ব্যবহৃত হয় — অ্যাপের নতুন ভার্সন প্রকাশ না করেই সমস্যাযুক্ত ফিচার তাৎক্ষণিকভাবে বন্ধ করা।
সচরাচর জিজ্ঞাসা
GitHub Actions দিয়ে শুরু করুন — যদি আপনার কোড GitHub-এ থাকে। Actions পাবলিক রিপোজিটরির জন্য বিনামূল্যে, Android এবং iOS (macOS runners) এর জন্য বিল্ট-ইন সাপোর্ট রয়েছে এবং রেডিমেড অ্যাকশনের বিশাল ইকোসিস্টেম রয়েছে। মোবাইল বিশেষজ্ঞতার জন্য — Bitrise।
না, CI সার্ভিস (GitHub Actions, Bitrise, CircleCI) macOS runners প্রদান করে। আপনি ব্যবহারের মিনিটের জন্য অর্থ প্রদান করেন। লোকাল Fastlane ডিবাগিংয়ের জন্য Mac প্রয়োজন, কিন্তু CI ক্লাউডে চলতে পারে।
Canary Release — স্থিতিশীলতা পরীক্ষার জন্য ব্যবহারকারীদের একটি উপসেটে নতুন ভার্সন রোলআউট। A/B Testing — সেরাটি বেছে নেওয়ার জন্য একটি ফিচারের দুটি ভেরিয়েন্টের তুলনা। Canary নির্ভরযোগ্যতা সম্পর্কে, A/B কনভার্সন সম্পর্কে।
Fastlane বাধ্যতামূলক নয় তবে অত্যন্ত সুপারিশকৃত। Fastlane ছাড়া আপনাকে ম্যানুয়ালি xcodebuild চালাতে, সার্টিফিকেট ম্যানেজ করতে এবং ওয়েব ইন্টারফেসের মাধ্যমে বিল্ড আপলোড করতে হবে। Fastlane একটি কমান্ড দিয়ে এই সব কাজ স্বয়ংক্রিয় করে।
Match iOS Code Signing সার্টিফিকেট ম্যানেজ করার জন্য Fastlane টুল। Match একটি এনক্রিপ্টেড Git রিপোজিটরিতে সার্টিফিকেট এবং প্রোভিজনিং প্রোফাইল সংরক্ষণ করে এবং সেগুলি সব ডেভেলপার এবং CI সার্ভারের মধ্যে সিঙ্ক্রোনাইজ করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।