Travis CI — o'z infratuzilmangizni boshqarmasdan mobil ilovalarni yig'ish, sinovdan o'tkazish va joylashtirishni avtomatlashtiradigan bulutli CI/CD platformasidir. Xizmat to'g'ridan-to'g'ri GitHub va Bitbucket bilan integratsiyalanadi, har bir push yoki Pull Requestda yig'ilishlarni ishga tushiradi. Travis CI, 2025 ma'lumotlariga ko'ra, platforma har oyda 10 milliondan ortiq yig'ilishni qayta ishlaydi. Sozlash repozitoriy ildizidagi yagona YAML fayli .travis.yml orqali amalga oshiriladi.
Asosiy ma'lumotlar
Travis CI — Git repozitoriyidagi o'zgarishlardan so'ng avtomatik ravishda yig'ilishlar va testlarni ishga tushiradigan bulutli uzluksiz integratsiya xizmatidir. Repozitoriy GitHub yoki Bitbucket orqali ulangandan so'ng, Travis CI yangi commitlar, Pull Request va teglar yaratilishini kuzatib boradi, .travis.yml dan konfiguratsiyani izolyatsiyalangan virtual muhitda bajaradi.
Travis CI ning ish jarayoni uch bosqichdan iborat: trigger (push yoki Pull Request), muhitni sozlash (install) va vazifalarni bajarish (script). Xizmat avtomatik ravishda oldindan o'rnatilgan asboblar to'plamiga ega virtual mashinani tanlaydi — iOS uchun Xcode bilan macOS obrazlari, Android uchun Android SDK va API darajalari bilan Linux obrazlari mavjud.
Travis CI Build Matrix — turli parametrlar bilan bitta konfiguratsiyani parallel ishga tushirish mexanizmini qo'llab-quvvatlaydi. Masalan, bir vaqtning o'zida iOS ilovasini Xcode 15 va Xcode 16 da, Android ilovasini esa API 33 va API 34 da sinab ko'rish mumkin. Har bir kombinatsiya alohida virtual mashinada bajariladi, bu umumiy validatsiya vaqtini qisqartiradi.
Travis CI Jenkins va GitLab CI dan sozlashning soddaligi va infratuzilma xarajatlarining yo'qligi bilan ajralib turadi. Jenkins o'z serverida o'rnatish va agentlarni sozlashni talab qiladi, GitLab CI — o'zini o'zi boshqaradigan yoki bulutli GitLab nusxasini talab qiladi. Travis CI obuna bo'yicha ishlaydi va serverlarni boshqarishni talab qilmaydi.
GitHub Actions bilan solishtirganda, Travis CI iOS yig'ilishlari uchun yetukroq macOS obrazlarini va mobil ishlab chiqish bo'yicha batafsil hujjatlarni taqdim etadi. GitHub Actions esa, aksincha, GitHub ekotizimi bilan yaxshiroq integratsiyalashgan va mobil yig'ishning o'ziga xos vazifalari uchun ko'proq community-actions ga ega.
Android ishlab chiqish uchun Travis CI Android SDK 34, Gradle 8 va emulyatorlarni qo'llab-quvvatlash bilan tayyor obrazlarni taklif qiladi. Yig'ilishni ishga tushirish tezligi 45–90 soniyani tashkil etadi, bu raqobatchilar bilan solishtirish mumkin. Asosiy cheklov — tarif rejasiga bog'liq bo'lgan parallel yig'ilishlar limiti.
Travis CI arxitekturasi vazifalar navbatini, virtual mashinalarni ajratishni va natijalarni qayta ishlashni boshqaradigan mikroxizmatlar asosida qurilgan. GitHub dan webhook qabul qilganda, platforma vazifani navbatga qo'yadi, tegishli til obraziga ega bo'sh virtual mashinani topadi va .travis.yml dan buyruqlarni bajaradi.
Har bir yig'ilish izolyatsiyalangan muhitda toza OS obrazi bilan bajariladi. Travis CI uch turdagi muhitni qo'llab-quvvatlaydi: Ubuntu Linux (standart), macOS (iOS va macOS yig'ilishlari uchun) va Windows (.NET va UWP uchun). Mobil loyihalar uchun oldindan o'rnatilgan Xcode va Fastlane bilan macOS obrazlarini qo'llab-quvvatlash muhim ahamiyatga ega.
Yig'ilishning hayotiy tsikli fazalarni o'z ichiga oladi: before_install (tizimni sozlash), install (bog'liqliklarni o'rnatish), before_script (testlarga tayyorgarlik), script (testlar va yig'ilishni ishga tushirish), after_script (tozalash). Har bir faza ixtiyoriy va YAML faylida sozlanadi.
Build Matrix ilovani parallel yig'ilishlarda turli xil til, SDK yoki muhit versiyalari bilan sinab ko'rish imkonini beradi. Matritsa language, os, env kalitlari orqali belgilanadi va barcha mumkin bo'lgan kombinatsiyalarni avtomatik yaratishni o'z ichiga oladi. Mobil loyihalar uchun bu iOS yoki Android API ning turli versiyalari bilan moslikni tekshirish uchun qulay.
Matritsadan foydalanganda Travis CI har bir kombinatsiya uchun alohida virtual mashinani ishga tushiradi. Bu yig'ilish daqiqalarining umumiy sarfini oshiradi, lekin bir nechta OS versiyalarini qo'llab-quvvatlaydigan loyihalar uchun juda muhimdir. Optimal qamrov va xarajat nisbati uchun matritsa hajmini 4–6 kombinatsiya bilan cheklang.
.travis.yml fayli YAML formatidan foydalanadi va asosiy kalitlardan iborat: language (til), os (OS), dist (distributiv versiyasi), before_install, install, script va deploy. Har bir kalit satr, buyruqlar massivi yoki murakkabroq konfiguratsiya uchun lug'at bo'lishi mumkin. Travis CI kalitlarni qat'iy tartibda qayta ishlaydi, bu yig'ilish bajarilishining bashorat qilinishini kafolatlaydi.
iOS loyihalari uchun osx_image kaliti Xcode versiyasini ko'rsatish bilan majburiydir, masalan xcode15.2. Android uchun — android kaliti SDK komponentlari bilan. Travis CI muvaffaqiyatli yig'ilishdan so'ng artefaktlarni App Store Connect, Google Play, Firebase yoki GitHub Releases ga avtomatik yuklash uchun provayderlar bilan deploy kalitini qo'llab-quvvatlaydi.
# Travis CI Build Matrix bilan iOS uchun
language: objective-c
os: osx
osx_image: xcode15.2
env:
- SCHEME=App-iOS
- SCHEME=App-tvOS
script:
- xcodebuild -scheme $SCHEME clean build test
iOS loyihalari uchun .travis.yml objective-c yoki swift tilini, osx_image orqali Xcode versiyasini va CocoaPods yoki Swift Package Manager orqali bog'liqliklarni o'rnatishni ko'rsatishi kerak. Travis CI barcha joriy Xcode versiyalarini, jumladan iOS 18 SDK bilan Xcode 16 ni qo'llab-quvvatlaydi, bu ilovalarni eng so'nggi API larda sinab ko'rish imkonini beradi.
Muhim bosqich — kodni imzolash uchun sertifikatlarni boshqarish. Repozitoriyada provisioning profillari va sertifikatlarni saqlash uchun Travis CI shifrlangan fayllaridan foydalaning. Fastlane Match shuningdek shifrlangan TRAVIS muhit o'zgaruvchilari orqali qo'llab-quvvatlanadi, bu AdHoc va App Store yig'ilishlari uchun imzolashni sozlashni soddalashtiradi.
# Fastlane bilan iOS ilovasi uchun Travis CI
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
XCTest da UI testlari bo'lgan loyihalar uchun simulyatorni ko'rsatish uchun xcodebuild da destinations kalitidan foydalaning. Travis CI macOS obrazlarida iOS simulyatorlarini qo'shimcha sozlashlarsiz ishga tushirishni qo'llab-quvvatlaydi — simulyator xcodebuild test buyrug'i bajarilganda avtomatik ravishda ishga tushadi.
Android loyihalari uchun .travis.yml android tili va android kaliti orqali SDK komponentlarini ko'rsatish bilan sozlanadi. Travis CI oldindan o'rnatilgan Java JDK 17, Gradle va asosiy Android SDK bilan Linux obrazlarini taqdim etadi. Qo'shimcha API darajalari va build-tools before_install bosqichida sdkmanager orqali o'rnatiladi.
Android yig'ilishlari uchun asosiy optimallashtirish — .gradle va .m2 kataloglarini keshlash. Travis CI cache kaliti orqali keshlashni qo'llab-quvvatlaydi, bu bog'liqliklarni o'rnatish vaqtini 120 soniyadan takroriy yig'ilishlarda 10–15 soniyagacha qisqartiradi. Gradle wrapper va Android Gradle Plugin uchun kesh yo'llarini ko'rsating.
# Android ilovasi uchun Travis CI
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 emulyatorida instrumental testlarni ishga tushirish uchun emulyatorni ishga tushirish va uning tayyorligini kutish bilan before_script bosqichini qo'shing. Travis CI Linux obrazlarida KVM apparat tezlashtirishni qo'llab-quvvatlaydi, bu dasturiy emulyatsiyaga nisbatan UI testlarining bajarilishini sezilarli darajada tezlashtiradi.
Travis CI GitHub va Bitbucket bilan OAuth ilovasi orqali integratsiyalanadi, u yangi commitlar haqida avtomatik xabardor qilish uchun repozitoriyga webhook qo'shadi. Travis CI da repozitoriy faollashtirilgandan so'ng, barcha push va Pull Request lar avtomatik yig'ilishni ishga tushiradi, status (passed, failed, pending) esa GitHub interfeysida ko'rsatiladi.
GitHub Pull Request bilan integratsiya — Travis CI ning asosiy funksiyasi. Yig'ilish statusi to'g'ridan-to'g'ri PR da ko'rsatiladi, muvaffaqiyatsiz testlarda birlashtirishni bloklaydi. GitHub da branch protection sozlamasi Travis CI bilan birgalikda asosiy tarmoqqa faqat sinovdan o'tgan kod kirishini kafolatlaydi.
Travis CI App Store Connect tokenlari, Google Play xizmat hisoblari va imzo kalitlarini saqlash uchun shifrlangan muhit o'zgaruvchilarini qo'llab-quvvatlaydi. O'zgaruvchilar travis encrypt CLI orqali shifrlanadi va .travis.yml ga qo'shiladi, nozik ma'lumotlarning yig'ilishga xavfsiz uzatilishini ta'minlaydi.
Travis CI ning shifrlangan fayllari provisioning profillari va iOS sertifikatlarini sizib chiqish xavfisiz GitHub repozitoriyasida saqlash imkonini beradi. Fayl travis encrypt-file buyrug'i bilan shifrlanadi va before_install bosqichida avtomatik ravishda deshifrlanadi. Bu Travis CI dan iOS ilovalarini yetkazib berish uchun foydalanadigan jamoalar uchun standart yondashuvdir.
Travis CI ning asosiy afzalligi — nol infratuzilma xarajatlari. Jamoa server sozlash, CI/CD dasturini o'rnatish va uning mavjudligini kuzatishga hojat yo'q. Barcha boshqaruv repozitoriyadagi .travis.yml ni tahrirlashgacha qisqaradi. Ommaviy repozitoriyalar uchun bepul reja Travis CI ni Open Source mobil loyihalari uchun mashhur tanlovga aylantiradi.
Travis CI ning cheklovi — tarif rejalarida yig'ilish vaqti va parallel vazifalar limiti. Yuqori commit chastotasi (kuniga 20+) va uzoq integratsion testlarga ega jamoalar uchun bulut daqiqalari qiymati o'z Jenkins serverini saqlash xarajatlaridan oshib ketishi mumkin. Travis CI shuningdek bepul rejada maxsus Docker obrazlarini qo'llab-quvvatlamaydi.
Mobil ishlab chiqish uchun Travis CI GitHub dan foydalanadigan, 10 dan kam dasturchiga ega va maxsus yig'ish infratuzilmasini talab qilmaydigan jamoalar uchun mos keladi. Compliance talablari bo'lgan yoki o'z macOS mashinalarida yig'ish zarurati bo'lgan Enterprise loyihalari uchun Jenkins yanada moslashuvchan yechim bo'lib qolmoqda.
Ko'p beriladigan savollar
Travis CI — mobil ilovalarni yig'ish, sinovdan o'tkazish va joylashtirishni avtomatlashtirish uchun bulutli CI/CD platformasi. Xizmat GitHub va Bitbucket bilan integratsiyalanadi, har bir push da yig'ilishlarni ishga tushiradi va kod sifatini nazorat qilish uchun Pull Request da statusni ko'rsatadi.
Travis CI — serverlarni boshqarish zaruratisiz bulutli xizmat, sozlash .travis.yml orqali. Jenkins — infratuzilma va plaginlar tizimi ustidan to'liq nazoratga ega self-hosted server. Travis CI sozlashda soddaroq, Jenkins murakkab korporativ stsenariylar uchun moslashuvchanroq.
language: swift ni ko'rsating, osx_image orqali Xcode versiyasini belgilang, before_install da CocoaPods va Fastlane ni o'rnating. Script da testlar uchun fastlane scan va yig'ish uchun fastlane gym buyruqlarini qo'shing. Sertifikatlarni repozitoriyda xavfsiz saqlash uchun travis encrypt-file orqali shifrlang.
language: android, JDK 17 va android kaliti orqali Android SDK komponentlarini ko'rsating. .gradle kataloglarini keshlashni cache orqali qo'shing. Script da Gradle vazifalarini ishga tushiring: ./gradlew assembleDebug va testDebugUnitTest. UI testlari uchun before_script da emulyatorni ishga tushirishni sozlang.
Ha, Travis CI kichik va o'rta hajmdagi tijorat loyihalari uchun mos keladi. Pullik rejalar parallel yig'ilishlar, xususiy repozitoriyalar va ustuvor qo'llab-quvvatlashni o'z ichiga oladi. Compliance talablari bo'lgan Enterprise uchun o'z infratuzilmasi bilan Jenkins yoki GitLab CI tavsiya etiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.