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 اجرا میشوند: بررسی کد → آزمایشهای واحد → ساخت APK/IPA debug → آزمایشهای یکپارچهسازی → ساخت release. هر مرحله فقط پس از موفقیت مرحله قبلی اجرا میشود. مصنوعات ساخت — APK، IPA، AAB، گزارشهای آزمایش — ذخیره شده و برای دانلود در دسترس هستند.
Continuous Delivery — کد به طور خودکار ساخته و آزمایش میشود، اما یک انسان تصمیم میگیرد که آیا به تولید منتشر شود. Continuous Deployment — هر ساخت موفقی به طور خودکار به تولید منتشر میشود. برای برنامههای موبایل، CD (تحویل به فروشگاهها) از طریق TestFlight یا Internal Testing رایجتر است، زیرا تصمیم نهایی انتشار توسط توسعهدهنده یا مدیر گرفته میشود. Staging — محیطی تا حد امکان نزدیک به تولید که برای آزمایش ساخت قبل از انتشار استفاده میشود.
GitHub Actions یک سیستم CI/CD داخلی برای خودکارسازی برنامههای موبایل در GitHub است. Actions از پیکربندی YAML (.github/workflows) برای تعریف خطوط لوله استفاده میکند. اقدامات آماده برای توسعه موبایل در دسترس هستند: actions/setup-java، gradle-build-action برای Android، xcodebuild-action برای iOS. GitHub Actions 2000 دقیقه رایگان در ماه برای مخازن خصوصی ارائه میدهد.
مثال: یک workflow Android شامل بررسی کد، نصب JDK 17، ذخیرهسازی وابستگیهای Gradle، اجرای lint و آزمایشهای واحد، ساخت APK و بارگذاری مصنوعات است. برای iOS — بررسی، نصب Xcode، pod install، اجرای XCTest، بایگانی و خروجی IPA. GitHub Actions با GitHub Releases، Slack و Telegram برای اعلانها یکپارچه میشود.
GitLab CI یک سیستم CI/CD داخلی در GitLab است که از طریق .gitlab-ci.yml پیکربندی میشود. GitLab CI از runnerها — عواملی که کارها را اجرا میکنند — استفاده میکند. برای توسعه موبایل میتوانید از runnerهای مشترک (Linux برای Android) یا runnerهای خود (macOS برای iOS) استفاده کنید. GitLab CI از کارهای موازی، مصنوعات، محیطها و تأیید دستی برای انتشارات تولید پشتیبانی میکند.
Bitrise یک پلتفرم CI/CD متخصص در اتوماسیون برنامههای موبایل است. Bitrise Steps آماده برای Android، iOS، Flutter و React Native ارائه میدهد: 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 برای تمام پروژههای موبایل استفاده میکنیم — CI/CD را در مقایسه با تنظیم دستی GitHub Actions به طور قابل توجهی ساده میکند.
| معیار | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| تخصص | عمومی | عمومی | موبایل | عمومی |
| macOS برای iOS | بله (macOS runner) | runner خود | بله (داخلی) | بله (macOS) |
| محدودیت رایگان | 2000 دقیقه/ماه | 400 دقیقه/ماه | 90 دقیقه/ماه | 6000 دقیقه/ماه |
| یکپارچهسازی Fastlane | از طریق run script | از طریق run script | Step آماده | از طریق run script |
| امضای کد | تنظیم دستی | تنظیم دستی | خودکار | از طریق Fastlane |
| ساختهای موازی | بله | بله | بله | بله |
Fastlane یک ابزار اتوماسیون برنامههای موبایل برای iOS و Android است که با Ruby نوشته شده است. Fastlane از سیستمی از اقدامات آماده (بیش از 200) و DSL برای توصیف سناریوها از طریق Fastfile تشکیل شده است. Fastlane وظایفی را حل میکند که هر توسعهدهنده موبایل به صورت دستی انجام میدهد: امضای کد، تولید اسکرینشات، بارگذاری در TestFlight و Google Play، مدیریت گواهیها و پروفایلهای تهیه.
Lane — یک سناریوی نامگذاری شده در Fastfile. مثال: lane :release do — زنجیرهای از اقدامات برای انتشار یک نسخه. Match — ابزاری برای ذخیره و همگامسازی ایمن گواهیها و پروفایلهای تهیه از طریق مخزن Git رمزگذاری شده. Gym — ساخت و بایگانی برنامههای iOS (یک پوشش روی xcodebuild). Pilot — بارگذاری و مدیریت ساختها در TestFlight. Deliver — بارگذاری برنامه و فراداده در App Store Connect. Snapshot — تولید خودکار اسکرینشات در همه زبانها. Screengrab — تولید خودکار اسکرینشات برای Android.
مثال Fastfile برای Android: lane :beta gradle (assembleRelease) را فراخوانی میکند، سپس firebase_app_distribution برای توزیع به آزمایشکنندگان. برای iOS: lane :beta match (دانلود گواهی)، gym (بایگانی) و pilot (بارگذاری در TestFlight) را فراخوانی میکند. Fastlane میتواند به صورت محلی و روی سرور CI اجرا شود — این آن را به یک ابزار جهانی در هر پروژه موبایل تبدیل میکند.
Canary Release یک استراتژی اتوماسیون CI/CD برای انتشار نسخه جدید برنامه به درصد کمی از کاربران (1-5%) قبل از انتشار کامل است. در Google Play Console این از طریق Staged Rollout پیادهسازی میشود: شما بهروزرسانی را برای 5% مخاطبان منتشر میکنید، crashes و معیارها را نظارت میکنید و در صورت عدم وجود مشکل، درصد را افزایش میدهید. در 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 SDK برای iOS، Android، Flutter و React Native ارائه میدهد. میتوانید ویژگیها را برای کاربران، بخشها، مناطق خاص یا درصدی از مخاطبان فعال کنید. Feature Flags همچنین به عنوان kill switch استفاده میشوند — غیرفعالسازی فوری یک ویژگی مشکلدار بدون انتشار نسخه جدید برنامه.
سوالات متداول
اگر کد شما در GitHub است با GitHub Actions شروع کنید. Actions برای مخازن عمومی رایگان است، پشتیبانی داخلی از Android و iOS (macOS runner) و اکوسیستم عظیمی از اقدامات آماده دارد. برای تخصص موبایل — Bitrise.
خیر، سرویسهای CI (GitHub Actions، Bitrise، CircleCI) macOS runner ارائه میدهند. شما برای دقیقههای استفاده پرداخت میکنید. برای اشکالزدایی محلی Fastlane به Mac نیاز دارید، اما CI میتواند در ابر کار کند.
Canary Release — انتشار نسخه جدید به زیرمجموعهای از کاربران برای بررسی پایداری. آزمایش A/B — مقایسه دو گونه از یک ویژگی برای انتخاب بهتر. Canary درباره قابلیت اطمینان است، A/B درباره تبدیل.
Fastlane اجباری نیست اما بسیار توصیه میشود. بدون Fastlane باید xcodebuild را دستی اجرا کنید، گواهیها را مدیریت کنید و ساختها را از طریق رابط وب بارگذاری کنید. Fastlane همه این وظایف را با یک دستور خودکار میکند.
Match ابزاری در Fastlane برای مدیریت گواهیهای Code Signing iOS است. Match گواهیها و پروفایلهای تهیه را در یک مخزن Git رمزگذاری شده ذخیره کرده و آنها را بین همه توسعهدهندگان و سرور CI همگامسازی میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.