Travis CI — облачна CI/CD платформа која аутоматизује изградњу, тестирање и примену мобилних апликација без управљања сопственом инфраструктуром. Сервис се интегрише директно са GitHub и Bitbucket, покрећући изградње при сваком push или Pull Request-у. Према подацима Travis CI, 2025, платформа обрађује преко 10 милиона изградњи месечно. Подешавање се врши путем јединствене YAML датотеке .travis.yml у корену репозиторијума.
Главно
Travis CI — облачна услуга континуиране интеграције која аутоматски покреће изградње и тестове при променама у Git репозиторијуму. Након повезивања репозиторијума преко GitHub или Bitbucket-а, Travis CI прати нове комитове, 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 (ОС), 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 се интегрише са GitHub-ом и Bitbucket-ом преко OAuth апликације која додаје 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 сервисних налога и кључева за потписивање. Променљиве се шифрују преко travis encrypt CLI-ја и додају у .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 — лимит времена изградње и паралелних задатака у тарифним плановима. За тимове са високом учесталошћу комитова (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 креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође