Travis CI — پلتفرم CI/CD ابری است که بیلد، تست و استقرار اپلیکیشنهای موبایل را بدون مدیریت زیرساخت شخصی خودکار میکند. این سرویس مستقیماً با GitHub و Bitbucket یکپارچه میشود و در هر push یا Pull Request بیلدها را اجرا میکند. بر اساس دادههای Travis CI, 2025، این پلتفرم ماهانه بیش از 10 میلیون بیلد پردازش میکند. پیکربندی از طریق یک فایل YAML به نام .travis.yml در ریشه مخزن انجام میشود.
نکات اصلی
Travis CI — یک سرویس ابری یکپارچهسازی مداوم است که پس از تغییرات در مخزن Git به طور خودکار بیلدها و تستها را اجرا میکند. پس از اتصال مخزن از طریق GitHub یا Bitbucket، Travis CI commitهای جدید، Pull Request و ایجاد تگها را ردیابی کرده و پیکربندی را از .travis.yml در یک محیط مجازی ایزوله اجرا میکند.
فرآیند کار Travis CI از سه مرحله تشکیل شده است: محرک (push یا Pull Request)، راهاندازی محیط (install) و اجرای وظایف (script). سرویس به طور خودکار ماشین مجازی را با مجموعه ابزارهای از پیش نصبشده انتخاب میکند — برای iOS تصاویر macOS با Xcode، برای Android تصاویر Linux با Android SDK و سطوح API در دسترس هستند.
Travis CI از Build Matrix پشتیبانی میکند — مکانیزمی برای اجرای موازی یک پیکربندی با پارامترهای مختلف. به عنوان مثال، میتوان همزمان اپلیکیشن iOS را روی Xcode 15 و Xcode 16 و اپلیکیشن Android را روی API 33 و API 34 تست کرد. هر ترکیب بر روی یک ماشین مجازی جداگانه اجرا میشود که زمان کل اعتبارسنجی را کاهش میدهد.
Travis CI با تمرکز بر سادگی پیکربندی و عدم وجود هزینههای زیرساختی از Jenkins و GitLab CI متمایز میشود. Jenkins نیاز به نصب بر روی سرور شخصی و پیکربندی عاملها دارد، GitLab CI — نمونه GitLab خودمدیریت یا ابری. Travis CI با اشتراک کار میکند و نیاز به مدیریت سرور ندارد.
در مقایسه با GitHub Actions، Travis CI تصاویر macOS بالغتری برای بیلدهای iOS و مستندات دقیقتری برای توسعه موبایل ارائه میدهد. GitHub Actions، در مقابل، با اکوسیستم GitHub یکپارچهتر است و community-actions بیشتری برای وظایف خاص بیلد موبایل دارد.
برای توسعه Android Travis CI تصاویر آماده با Android SDK 34، Gradle 8 و پشتیبانی از شبیهسازها را ارائه میدهد. سرعت راهاندازی بیلد 45–90 ثانیه است که با رقبا قابل مقایسه است. محدودیت اصلی — محدودیت بیلدهای موازی، بسته به طرح تعرفهای.
معماری Travis CI بر روی میکروسرویسهایی ساخته شده است که صف وظایف، تخصیص ماشینهای مجازی و پردازش نتایج را مدیریت میکنند. هنگام دریافت webhook از GitHub، پلتفرم وظیفه را در صف قرار میدهد، یک ماشین مجازی آزاد با تصویر زبان مربوطه پیدا میکند و دستورات را از .travis.yml اجرا میکند.
هر بیلد در محیط ایزوله با تصویر تمیز OS اجرا میشود. Travis CI از سه نوع محیط پشتیبانی میکند: Ubuntu Linux (استاندارد)، macOS (برای بیلدهای iOS و macOS) و Windows (برای .NET و UWP). برای پروژههای موبایل، پشتیبانی از تصاویر macOS با Xcode و Fastlane از پیش نصبشده حیاتی است.
چرخه حیات بیلد شامل فازهای زیر است: before_install (راهاندازی سیستم)، install (نصب وابستگیها)، before_script (آمادهسازی برای تستها)، script (اجرای تستها و بیلد)، after_script (پاکسازی). هر فاز اختیاری است و در فایل YAML پیکربندی میشود.
Build Matrix امکان تست اپلیکیشن را با نسخههای مختلف زبان، SDK یا محیط در بیلدهای موازی فراهم میکند. ماتریس از طریق کلیدهای language، os، env تعریف میشود و شامل تولید خودکار تمام ترکیبات ممکن است. برای پروژههای موبایل، این روش برای بررسی سازگاری با نسخههای مختلف iOS یا Android API مناسب است.
هنگام استفاده از ماتریس، Travis CI برای هر ترکیب یک ماشین مجازی جداگانه راهاندازی میکند. این کار مصرف کلی دقایق بیلد را افزایش میدهد، اما برای پروژههایی که از چندین نسخه OS پشتیبانی میکنند حیاتی است. اندازه ماتریس را برای نسبت بهینه پوشش و هزینه به 4–6 ترکیب محدود کنید.
فایل .travis.yml از فرمت YAML استفاده میکند و از کلیدهای اصلی تشکیل شده است: language (زبان)، os (OS)، dist (نسخه توزیع)، before_install، install، script و deploy. هر کلید میتواند شامل یک رشته، آرایهای از دستورات یا یک دیکشنری برای پیکربندی پیچیدهتر باشد. Travis CI کلیدها را به ترتیب دقیق پردازش میکند که قابلیت پیشبینی اجرای بیلد را تضمین میکند.
برای پروژههای iOS کلید osx_image با مشخص کردن نسخه Xcode، به عنوان مثال xcode15.2، الزامی است. برای Android — کلید android با کامپوننتهای SDK. Travis CI از کلید deploy با ارائهدهندگانی برای آپلود خودکار آرتیفکتها در App Store Connect، Google Play، Firebase یا GitHub Releases پس از بیلد موفق پشتیبانی میکند.
# Travis CI با Build Matrix برای iOS
language: objective-c
os: osx
osx_image: xcode15.2
env:
- SCHEME=App-iOS
- SCHEME=App-tvOS
script:
- xcodebuild -scheme $SCHEME clean build test
برای پروژههای iOS .travis.yml باید زبان objective-c یا swift، نسخه Xcode را از طریق osx_image و نصب وابستگیها را از طریق CocoaPods یا Swift Package Manager مشخص کند. Travis CI از تمام نسخههای فعلی Xcode، از جمله Xcode 16 با iOS 18 SDK پشتیبانی میکند که امکان تست اپلیکیشنها بر روی آخرین APIها را فراهم میکند.
مرحله مهم — مدیریت گواهیها برای امضای کد. از فایلهای رمزگذاریشده Travis CI برای ذخیره پروفایلهای provisioning و گواهیها در مخزن استفاده کنید. Fastlane Match نیز از طریق متغیرهای محیطی رمزگذاریشده TRAVIS پشتیبانی میشود که پیکربندی امضا برای بیلدهای AdHoc و App Store را ساده میکند.
# Travis CI برای اپلیکیشن iOS با Fastlane
language: swift
os: osx
osx_image: xcode15.2
branches:
only:
- main
- /\d+\.\d+\.\d+/
before_install:
- gem install cocoapods
- gem install fastlane
install:
- pod install --repo-update
script:
- fastlane scan
- fastlane gym
برای پروژههای دارای تست UI بر روی XCTest از کلید destinations در xcodebuild برای مشخص کردن شبیهساز استفاده کنید. Travis CI از اجرای شبیهسازهای iOS بر روی تصاویر macOS بدون پیکربندی اضافی پشتیبانی میکند — شبیهساز هنگام اجرای دستور تست xcodebuild test به طور خودکار راهاندازی میشود.
برای پروژههای Android .travis.yml با زبان android و مشخص کردن کامپوننتهای SDK از طریق کلید android پیکربندی میشود. Travis CI تصاویر Linux با Java JDK 17، Gradle و Android SDK پایه را ارائه میدهد. سطوح API اضافی و build-tools از طریق sdkmanager در فاز before_install نصب میشوند.
بهینهسازی کلیدی برای بیلدهای Android — کش کردن دایرکتوریهای .gradle و .m2. Travis CI از کش کردن از طریق کلید cache پشتیبانی میکند که زمان نصب وابستگیها را از 120 ثانیه به 10–15 ثانیه در بیلدهای تکراری کاهش میدهد. مسیرهای کش را برای Gradle wrapper و Android Gradle Plugin مشخص کنید.
# Travis CI برای اپلیکیشن Android
language: android
dist: jammy
jdk: oraclejdk17
android:
components:
- tools
- platform-tools
- build-tools-34.0.0
- android-34
- extra-google-m2repository
before_script:
- yes | sdkmanager "platforms;android-34"
script:
- ./gradlew assembleDebug testDebugUnitTest
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
برای اجرای تستهای ابزاری بر روی شبیهساز Android، مرحله before_script را با راهاندازی شبیهساز و انتظار برای آماده شدن آن اضافه کنید. Travis CI از شتاب سختافزاری KVM بر روی تصاویر Linux پشتیبانی میکند که اجرای تستهای UI را در مقایسه با شبیهسازی نرمافزاری به طور قابل توجهی سریعتر میکند.
Travis CI از طریق برنامه OAuth با GitHub و Bitbucket یکپارچه میشود که برای اطلاعرسانی خودکار درباره commitهای جدید یک webhook به مخزن اضافه میکند. پس از فعالسازی مخزن در Travis CI، تمام push و Pull Request به طور خودکار بیلد را اجرا میکنند و وضعیت (passed، failed، pending) در رابط GitHub نمایش داده میشود.
یکپارچهسازی با GitHub Pull Request — ویژگی کلیدی Travis CI. وضعیت بیلد مستقیماً در PR نمایش داده میشود و در صورت ناموفق بودن تستها از ادغام جلوگیری میکند. پیکربندی branch protection در GitHub همراه با Travis CI تضمین میکند که فقط کد تستشده وارد شاخه اصلی میشود.
Travis CI از متغیرهای محیطی رمزگذاریشده برای ذخیره توکنهای App Store Connect، حسابهای سرویس Google Play و کلیدهای امضا پشتیبانی میکند. متغیرها از طریق CLI travis encrypt رمزگذاری میشوند و به .travis.yml اضافه میشوند و انتقال امن دادههای حساس به بیلد را تضمین میکنند.
فایلهای رمزگذاریشده Travis CI امکان ذخیره پروفایلهای provisioning و گواهیهای iOS را در مخزن GitHub بدون خطر نشت فراهم میکنند. فایل با دستور travis encrypt-file رمزگذاری میشود و به طور خودکار در مرحله before_install رمزگشایی میشود. این رویکرد استاندارد برای تیمهایی است که از Travis CI برای تحویل اپلیکیشنهای iOS استفاده میکنند.
مزیت اصلی Travis CI — هزینههای صفر زیرساخت. تیم نیازی به پیکربندی سرور، نصب نرمافزار CI/CD و نظارت بر دسترسی آن ندارد. تمام مدیریت به ویرایش .travis.yml در مخزن خلاصه میشود. طرح رایگان برای مخازن عمومی، Travis CI را به انتخابی محبوب برای پروژههای موبایل Open Source تبدیل میکند.
محدودیت Travis CI — محدودیت زمان بیلد و وظایف موازی در طرحهای تعرفهای. برای تیمهایی با فرکانس بالای commit (بیش از 20 در روز) و تستهای یکپارچهسازی طولانی، هزینه دقایق ابری ممکن است از هزینه نگهداری سرور Jenkins شخصی فراتر رود. همچنین Travis CI از تصاویر Docker سفارشی در طرح رایگان پشتیبانی نمیکند.
برای توسعه موبایل Travis CI برای تیمهایی که از GitHub استفاده میکنند، کمتر از 10 توسعهدهنده دارند و زیرساخت بیلد سفارشی نیاز ندارند مناسب است. برای پروژههای Enterprise با الزامات Compliance یا نیاز به بیلد بر روی ماشینهای macOS شخصی، Jenkins راهحل انعطافپذیرتری باقی میماند.
سؤالات متداول
Travis CI — یک پلتفرم CI/CD ابری برای خودکارسازی بیلد، تست و استقرار اپلیکیشنهای موبایل است. سرویس با GitHub و Bitbucket یکپارچه میشود، در هر push بیلدها را اجرا میکند و برای کنترل کیفیت کد وضعیت را در Pull Request نمایش میدهد.
Travis CI — سرویس ابری بدون نیاز به مدیریت سرور، پیکربندی از طریق .travis.yml. Jenkins — سرور self-hosted با کنترل کامل زیرساخت و سیستم افزونهها. Travis CI در پیکربندی سادهتر است، Jenkins برای سناریوهای پیچیده شرکتی انعطافپذیرتر است.
language: swift را مشخص کنید، نسخه Xcode را از طریق osx_image تعیین کنید، CocoaPods و Fastlane را در before_install نصب کنید. در script دستورات fastlane scan برای تستها و fastlane gym برای بیلد را اضافه کنید. گواهیها را از طریق travis encrypt-file برای ذخیره امن در مخزن رمزگذاری کنید.
language: android، JDK 17 و کامپوننتهای Android SDK را از طریق کلید android مشخص کنید. کش کردن دایرکتوریهای .gradle را از طریق cache اضافه کنید. در script وظایف Gradle را اجرا کنید: ./gradlew assembleDebug و testDebugUnitTest. برای تستهای UI راهاندازی شبیهساز را در before_script پیکربندی کنید.
بله، Travis CI برای پروژههای تجاری کوچک و متوسط مناسب است. طرحهای پولی شامل بیلدهای موازی، مخازن خصوصی و پشتیبانی اولویتدار هستند. برای Enterprise با الزامات Compliance، Jenkins یا GitLab CI با زیرساخت شخصی توصیه میشود.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید