Bitrise یک پلتفرم CI/CD تخصصی برای توسعه موبایل است که حول Steps آماده — ماژولهای از پیش پیکربندی شده برای build، امضا و انتشار اپلیکیشنهای iOS و Android ساخته شده است. به گزارش Bitrise، 2024، این پلتفرم از بیش از 400 Steps آماده پشتیبانی میکند و با Xcode، Gradle، Fastlane، Firebase و App Store Connect یکپارچه میشود.
نکات اصلی
Bitrise یک پلتفرم CI/CD است که در سال 2016 راهاندازی شد و کاملاً بر توسعه موبایل متمرکز است. برخلاف راهحلهای عمومی GitHub Actions و GitLab CI، Bitrise از ابتدا برای خودکارسازی build اپلیکیشنهای iOS و Android طراحی شده است. این پلتفرم در ابر کار میکند و runnerهای میزبانی شده خود را با macOS و Linux ارائه میدهد. Bitrise از تمام stackهای محبوب موبایل پشتیبانی میکند: Swift، Kotlin، Flutter، React Native، Cordova و Xamarin.
مزیت اصلی Bitrise قالبهای Step از پیش پیکربندی شده برای وظایف معمول توسعه موبایل است: Xcode build، Gradle assemble، Fastlane، Firebase Distribution، TestFlight، Google Play. پیکربندی pipeline از طریق ویرایشگر بصری دقیقهها طول میکشد و پیکربندی YAML به طور خودکار در فایل bitrise.yml تولید میشود. برای کاربران حرفهای، ویرایشگر YAML با تکمیل خودکار در دسترس است.
معماری Bitrise بر دو مفهوم کلیدی بنا شده است: Workflow و Step. Workflow دنبالهای از Steps است که pipeline را مشخص میکند. هر پروژه میتواند چندین Workflow داشته باشد: primary (build اصلی)، deploy (انتشار)، test (فقط تستها). Workflow توسط triggerها اجرا میشود: push، PR، tag یا بر اساس زمانبندی. Workflow را میتوان به صورت دستی از رابط وب اجرا کرد که برای buildهای ad-hoc مفید است.
Step یک ماژول اتمی است که یک وظیفه را انجام میدهد. میتوان Steps را در ویرایشگر بصری جابجا کرد، ترتیب و پیکربندی آنها را تغییر داد. Bitrise ارائه میدهد Steps برای Xcode Archive & Export، Gradle Runner، CocoaPods Install، Firebase Distribution، اعلانهای Slack. جامعه نیز Steps ایجاد میکند — آنها از طریق Step Library در دسترس هستند. هر Step دارای پارامترهای ورودی اجباری و اختیاری و همچنین متغیرهای خروجی است که میتوانند توسط Steps بعدی استفاده شوند.
Bitrise از مفهوم Pipeline پشتیبانی میکند — ترکیب چندین Workflow در یک pipeline. Pipeline میتواند شامل build اصلی برای همه پلتفرمها و workflowهای جداگانه برای استقرار و تست باشد. این امکان ایجاد فرآیندهای CI/CD پیچیده را فراهم میکند که در آن یک build، build دیگری را راهاندازی میکند. Stacks Bitrise نرمافزار از پیش نصب شده روی runner را تعیین میکند: Xcode، Android SDK، Flutter، Node.js و سایر ابزارها.
Bitrise با GitHub، GitLab، Bitbucket و Azure DevOps یکپارچه میشود. پس از اتصال مخزن، Bitrise به طور خودکار نوع پروژه (iOS، Android، Flutter) را تشخیص میدهد و یک قالب Workflow پیشنهاد میکند. برای مخازن خصوصی، Bitrise از طریق OAuth یا کلید SSH درخواست دسترسی میکند. اتصال چندین مخزن به یک اپلیکیشن پشتیبانی میشود.
پس از اتصال، Bitrise یک webhook در مخزن برای شروع خودکار buildها در push و PR ایجاد میکند. هر build یک شماره منحصربهفرد، لاگها و artifactها دریافت میکند. رابط کاربری امکان مشاهده تاریخچه buildها، مقایسه تغییرات و راهاندازی مجدد buildهای ناموفق را فراهم میکند. Bitrise همچنین از scheduled builds برای buildهای منظم شبانه و یکپارچهسازی با Jira برای ردیابی commitها پشتیبانی میکند.
Code signing برای iOS یکی از دشوارترین وظایف CI/CD است و Bitrise آن را بسیار ساده حل میکند. پلتفرم ذخیره میکند گواهیها و provisioning profileها را به صورت رمزگذاری شده، به طور خودکار آنها را قبل از build در keychain مناسب نصب میکند و IPA امضا شده را خروجی میدهد. Step Certificate and Profile Installer فایلها را از ذخیرهگاه Bitrise دانلود و Xcode را پیکربندی میکند. انواع گواهی Development، AdHoc، AppStore و Enterprise پشتیبانی میشوند.
برای انتشار در App Store Connect، Bitrise Steps برای آپلود IPA از طریق Xcode Archive & Export ارائه میدهد. انتشار در Google Play از Gradle Runner با امضا از طریق Keystore استفاده میکند، پس از آن APK/AAB از طریق Google Play Deploy Step در Google Play Console آپلود میشود. برای Firebase App Distribution فقط کافی است Firebase Token و گروه تستکنندگان را مشخص کنید. Bitrise بهروزرسانی نسخههای build (version number و build number) را قبل از هر انتشار خودکار میکند.
گواهیها در بخش Code Signing رابط وب آپلود میشوند: P12 با کلید خصوصی، provisioning profile (.mobileprovision)، Keystore (.jks/.keystore) برای Android. Bitrise به طور خودکار گواهیهای iOS را در هر بار اجرای Workflow در keychain نصب میکند و اپلیکیشن امضا شده را خروجی میدهد. برای Android فقط کافی است فایل Keystore را آپلود کنید — Bitrise آن را از طریق متغیرهای محیطی در زمان build به Gradle منتقل میکند.
یک Workflow برای اپلیکیشن Flutter را در نظر بگیرید که buildها را برای iOS و Android ساخته و منتشر میکند. Bitrise به طور خودکار پروژه Flutter را تشخیص میدهد و Steps مربوطه را پیشنهاد میکند. Workflow شامل نصب Flutter، کش کردن pub-cache، build، تست و استقرار است. برای build iOS علاوه بر این به گواهیهای code signing نیاز است که Bitrise به طور خودکار بارگذاری میکند.
هنگام build اپلیکیشنهای Flutter، Bitrise از پیکربندی جداگانه برای پلتفرمها پشتیبانی میکند. build Android روی Linux runner با Flutter SDK و iOS روی macOS runner اجرا میشود. Workflow میتواند شامل Steps شرطی باشد: build_android و build_ios که فقط روی پلتفرمهای مربوطه اجرا میشوند. برای پروژههای React Native، Bitrise مجموعه مشابهی از Steps با npm/nvm و Metro bundler ارائه میدهد.
format_version: 13
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: main
workflow: primary
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: true
- git-clone@8: {}
- flutter-installer@0:
inputs:
- version: 3.24.0
- flutter-build@0:
inputs:
- platform: both
- ios_output_type: archive
- deploy-to-bitrise-io@2: {}
پس از build میتوان Step Firebase App Distribution را برای iOS و Android اضافه کرد. Step دریافت میکند firebase_token، app_id و testers_group. Bitrise مقادیر را از Secrets جایگزین میکند — ذخیره امن توکنها تضمین میکند که در لاگها ظاهر نشوند.
- firebase-app-distribution@1:
inputs:
- firebase_token: $FIREBASE_TOKEN
- app_id: $FIREBASE_IOS_APP_ID
- testers_group: qa-team
- release_notes: |
Build $BITRISE_BUILD_NUMBER
مدیریت صحیح دادههای محرمانه اساس امنیت فرآیندهای CI/CD است. Bitrise Secrets رمزگذاری میشوند و پس از ذخیره قابل خواندن نیستند. هنگام ایجاد یک اپلیکیشن جدید، Bitrise وارد کردن secrets از پروژه دیگر یا تنظیم دستی را پیشنهاد میکند. برای تیمهای بزرگ، قابلیت Environment Groups در دسترس است — مدیریت متمرکز متغیرها و secrets برای گروهی از اپلیکیشنها.
Bitrise ذخیرهسازی داخلی Secrets را برای دادههای محرمانه فراهم میکند: کلیدهای API، توکنهای Firebase، رمزهای Keystore، Apple ID. Secrets تنظیم میشوند به صورت جفت کلید-مقدار در رابط وب و در لاگهای build پنهان میشوند. در سطح اپلیکیشن و سطح Workflow در دسترس هستند. Secrets پس از ذخیره قابل خواندن نیستند — فقط میتوان آنها را بازنویسی کرد.
Environment Variables (بدون برچسب Secret) برای پیکربندیها استفاده میشوند: نسخه Xcode، مسیر پروژه، طرح build. متغیرهای محیطی Bitrise (BITRISE_BUILD_NUMBER، BITRISE_APP_TITLE) اطلاعات فرابرای build ارائه میدهند. Secrets هنگام ذخیره رمزگذاری و فقط روی runner در طول اجرای Workflow رمزگشایی میشوند. برای مدیریت گروهی متغیرها، Bitrise از Environment Groups پشتیبانی میکند — مجموعههایی از متغیرها که میتوانند همزمان برای چندین اپلیکیشن اعمال شوند.
مدیریت گواهیهای iOS از طریق Bitrise نیاز به توجه ویژه دارد. پلتفرم به طور خودکار P12 و provisioning profile را قبل از build در keychain سیستم نصب میکند. برای Android از فایل Keystore استفاده میشود که در بخش Code Signing آپلود میشود. هر فایل گواهی به صورت رمزگذاری شده ذخیره و فقط در طول build رمزگشایی میشود.
- google-play-deploy@3:
inputs:
- package_name: com.example.app
- service_account_json_key: $SERVICE_ACCOUNT_KEY
- app_file: $BITRISE_APK_PATH
Bitrise stackهای مختلفی برای build ارائه میدهد — تصاویر از پیش نصب شده با ابزارها و SDK. Stackها در دسترس هستند برای Xcode (نسخههای 14، 15، 16 با iOS SDK 17، 18)، برای Android (با نسخههای مختلف SDK و NDK)، برای Flutter، React Native و Kotlin Multiplatform. هر stack دارای توضیحاتی از ابزارها و نسخههای از پیش نصب شده است.
انتخاب stack بر زمان build و سازگاری با پروژه تأثیر میگذارد. Bitrise به طور منظم بهروزرسانی میکند stackها را با افزودن نسخههای جدید ابزارها. برای جلوگیری از تغییرات غیرمنتظره در هنگام بهروزرسانی پلتفرم، میتوان نسخه خاصی از stack را در bitrise.yml ثابت کرد. برای وابستگیهای سفارشی از Script Step استفاده میشود که بستههای لازم را قبل از build اصلی نصب میکند. Bitrise همچنین از تصاویر Docker برای Linux stacks پشتیبانی میکند که امکان استفاده از محیط سفارشی برای buildهای Android را فراهم میکند.
سؤالات متداول
Bitrise طرح رایگان با 90 دقیقه build در ماه و یک concurrent build ارائه میدهد. Developer (79$/ماه) شامل 3000 دقیقه، تا 5 concurrent build و تمام یکپارچهسازیها است. Enterprise — قیمتگذاری سفارشی.
Bitrise از iOS (Swift, Objective-C)، Android (Kotlin, Java)، Flutter، React Native، Cordova، Ionic و Xamarin پشتیبانی میکند. برای هر پلتفرم ابزارها و قالبهای Workflow از پیش نصب شده وجود دارد.
Bitrise برای build iOS بدون پیکربندی اضافی macOS runner ارائه میدهد. پلتفرم خود زیرساخت macOS را مدیریت میکند — runner بسته به stack اپلیکیشن به طور خودکار انتخاب میشود.
Bitrise گواهیها را به صورت رمزگذاری شده ذخیره میکند و قبل از build از طریق Step Certificate and Profile Installer آنها را به طور خودکار در keychain نصب میکند. برای Android نیز به طور مشابه — Keystore آپلود و هنگام امضا توسط Gradle استفاده میشود.
بله، Bitrise از Steps سفارشی از طریق Script Step (اسکریپت bash) و Step Library سفارشی از GitHub پشتیبانی میکند. همچنین میتوانید Step خود را طبق مستندات Bitrise ایجاد کرده و در Step Library منتشر کنید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید