Travis CI는 자체 인프라를 관리하지 않고 모바일 애플리케이션의 빌드, 테스트 및 배포를 자동화하는 클라우드 CI/CD 플랫폼입니다. 이 서비스는 GitHub 및 Bitbucket과 직접 통합하여 푸시나 Pull Request 시마다 빌드를 트리거합니다. Travis CI, 2025에 따르면 이 플랫폼은 매월 1,000만 개 이상의 빌드를 처리합니다. 구성은 리포지토리 루트의 단일 YAML 파일 .travis.yml을 통해 수행됩니다.
핵심 사항
Travis CI는 Git 리포지토리에 변경 사항이 있을 때 자동으로 빌드와 테스트를 실행하는 클라우드 기반 지속적 통합 서비스입니다. GitHub 또는 Bitbucket을 통해 리포지토리를 연결한 후 Travis CI는 새로운 커밋, Pull Request 및 태그 생성을 추적하고 격리된 가상 환경에서 .travis.yml의 구성을 실행합니다.
Travis CI의 작업 프로세스는 트리거(푸시 또는 Pull Request), 환경 설정(install), 작업 실행(script)의 세 단계로 구성됩니다. 서비스는 사전 설치된 도구 세트가 있는 가상 머신을 자동으로 선택합니다. iOS용 Xcode가 있는 macOS 이미지, Android용 Android SDK 및 API 수준이 있는 Linux 이미지를 사용할 수 있습니다.
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는 iOS 빌드를 위한 더 성숙한 macOS 이미지와 상세한 모바일 개발 문서를 제공합니다. 반면 GitHub Actions는 GitHub 생태계와 더 잘 통합되어 있으며 특정 모바일 빌드 작업을 위한 더 많은 커뮤니티 액션을 보유하고 있습니다.
Android 개발의 경우 Travis CI는 Android SDK 34, Gradle 8 및 에뮬레이터 지원이 포함된 즉시 사용 가능한 이미지를 제공합니다. 빌드 시작 시간은 45~90초로 경쟁사와 비슷합니다. 주요 제한 사항은 가격 플랜에 따라 달라지는 병렬 빌드 제한입니다.
Travis CI의 아키텍처는 작업 대기열, 가상 머신 할당 및 결과 처리를 관리하는 마이크로서비스를 기반으로 구축되었습니다. GitHub에서 webhook을 수신하면 플랫폼은 작업을 대기열에 넣고 적절한 언어 이미지가 있는 사용 가능한 가상 머신을 찾아 .travis.yml의 명령을 실행합니다.
각 빌드는 깨끗한 OS 이미지로 격리된 환경에서 실행됩니다. Travis CI는 Ubuntu Linux(표준), macOS(iOS 및 macOS 빌드용), Windows(.NET 및 UWP용)의 세 가지 환경 유형을 지원합니다. 모바일 프로젝트의 경우 Xcode와 Fastlane이 사전 설치된 macOS 이미지 지원이 매우 중요합니다.
빌드 수명 주기에는 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 프로젝트의 경우 Xcode 버전이 포함된 osx_image 키가 필수입니다(예: xcode15.2). Android의 경우 SDK 구성 요소가 포함된 android 키가 필요합니다. Travis CI는 빌드 성공 후 App Store Connect, Google Play, Firebase 또는 GitHub Releases로 자동 아티팩트 업로드를 위한 공급자와 함께 deploy 키를 지원합니다.
# iOS용 Build Matrix가 포함된 .travis.yml
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, osx_image를 통한 Xcode 버전, CocoaPods 또는 Swift Package Manager를 통한 종속성 설치를 지정해야 합니다. Travis CI는 iOS 18 SDK가 포함된 Xcode 16을 포함한 모든 최신 Xcode 버전을 지원하므로 최신 API에서 애플리케이션을 테스트할 수 있습니다.
중요한 단계는 코드 서명을 위한 인증서 관리입니다. Travis CI 암호화 파일을 사용하여 프로비저닝 프로필과 인증서를 리포지토리에 저장합니다. Fastlane Match는 암호화된 TRAVIS 환경 변수를 통해서도 지원되며 AdHoc 및 App Store 빌드의 서명 설정을 간소화합니다.
# Fastlane을 사용한 iOS 애플리케이션용 .travis.yml
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에서 UI 테스트가 있는 프로젝트의 경우 xcodebuild에서 destinations 키를 사용하여 시뮬레이터를 지정합니다. Travis CI는 추가 구성 없이 macOS 이미지에서 iOS 시뮬레이터 실행을 지원합니다. xcodebuild test 명령 실행 시 시뮬레이터가 자동으로 시작됩니다.
Android 프로젝트의 경우 .travis.yml은 android 언어와 android 키를 통해 지정된 SDK 구성 요소로 구성됩니다. Travis CI는 Java JDK 17, Gradle 및 기본 Android SDK가 사전 설치된 Linux 이미지를 제공합니다. 추가 API 수준 및 build-tools는 before_install 단계에서 sdkmanager를 통해 설치됩니다.
Android 빌드의 주요 최적화는 .gradle 및 .m2 디렉토리의 캐싱입니다. Travis CI는 cache 키를 통한 캐싱을 지원하여 후속 빌드에서 종속성 설치 시간을 120초에서 10~15초로 줄입니다. Gradle wrapper 및 Android Gradle Plugin의 캐시 경로를 지정하세요.
# Android 애플리케이션용 .travis.yml
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는 Linux 이미지에서 KVM 하드웨어 가속을 지원하여 소프트웨어 에뮬레이션에 비해 UI 테스트 실행 속도를 크게 높입니다.
Travis CI는 새 커밋에 대한 자동 알림을 위해 리포지토리에 webhook을 추가하는 OAuth 애플리케이션을 통해 GitHub 및 Bitbucket과 통합됩니다. Travis CI에서 리포지토리를 활성화하면 모든 푸시 및 Pull Request가 자동으로 빌드를 트리거하고 상태(passed, failed, pending)가 GitHub 인터페이스에 표시됩니다.
GitHub Pull Request와의 통합은 Travis CI의 핵심 기능입니다. 빌드 상태가 PR에 직접 표시되어 테스트 실패 시 병합을 차단합니다. GitHub의 브랜치 보호를 Travis CI와 함께 구성하면 테스트된 코드만 메인 브랜치에 도달하도록 보장합니다.
Travis CI는 App Store Connect 토큰, Google Play 서비스 계정 및 서명 키를 저장하기 위한 암호화된 환경 변수를 지원합니다. 변수는 travis encrypt CLI를 통해 암호화되어 .travis.yml에 추가되며 빌드에 민감한 데이터의 안전한 전송을 보장합니다.
Travis CI의 암호화된 파일을 사용하면 유출 위험 없이 iOS 프로비저닝 프로필과 인증서를 GitHub 리포지토리에 저장할 수 있습니다. 파일은 travis encrypt-file 명령으로 암호화되고 before_install 단계에서 자동으로 복호화됩니다. 이는 Travis CI를 사용하여 iOS 앱을 배포하는 팀의 표준 접근 방식입니다.
Travis CI의 주요 장점은 인프라 비용이 0이라는 것입니다. 팀은 서버를 설정하거나 CI/CD 소프트웨어를 설치하거나 가용성을 모니터링할 필요가 없습니다. 모든 관리는 리포지토리에서 .travis.yml을 편집하는 것으로 축소됩니다. 공개 리포지토리를 위한 무료 플랜은 Travis CI를 오픈 소스 모바일 프로젝트의 인기 있는 선택으로 만듭니다.
Travis CI의 제한 사항은 가격 플랜의 빌드 시간 제한 및 병렬 작업 제한입니다. 커밋 빈도가 높고(하루 20회 이상) 통합 테스트가 긴 팀의 경우 클라우드 시간 비용이 자체 Jenkins 서버 유지 비용을 초과할 수 있습니다. 또한 Travis CI는 무료 플랜에서 사용자 지정 Docker 이미지를 지원하지 않습니다.
모바일 개발의 경우 Travis CI는 GitHub를 사용하고 개발자가 10명 미만이며 사용자 지정 빌드 인프라가 필요하지 않은 팀에 적합합니다. 규정 준수 요구 사항이 있거나 사용자 지정 macOS 시스템에서 빌드해야 하는 엔터프라이즈 프로젝트의 경우 Jenkins가 더 유연한 솔루션입니다.
자주 묻는 질문
Travis CI는 모바일 애플리케이션의 빌드, 테스트 및 배포를 자동화하는 클라우드 CI/CD 플랫폼입니다. 서비스는 GitHub 및 Bitbucket과 통합하여 푸시 시마다 빌드를 트리거하고 코드 품질 관리를 위해 Pull Request에 상태를 표시합니다.
Travis CI는 서버 관리가 필요 없는 클라우드 서비스로 .travis.yml을 통해 구성합니다. Jenkins는 완전한 인프라 제어와 플러그인 시스템을 갖춘 자체 호스팅 서버입니다. Travis CI는 설정이 간편하고 Jenkins는 복잡한 엔터프라이즈 시나리오에 더 유연합니다.
language: swift를 지정하고 osx_image로 Xcode 버전을 설정하며 before_install에서 CocoaPods와 Fastlane을 설치합니다. script에 테스트용 fastlane scan과 빌드용 fastlane gym 명령을 추가합니다. 리포지토리에서 안전한 저장을 위해 travis encrypt-file로 인증서를 암호화합니다.
language: android, JDK 17 및 android 키를 통한 Android SDK 구성 요소를 지정합니다. cache를 통해 .gradle 디렉토리 캐싱을 추가합니다. script에서 Gradle 작업(./gradlew assembleDebug 및 testDebugUnitTest)을 실행합니다. UI 테스트의 경우 before_script에서 에뮬레이터 시작을 구성합니다.
네, Travis CI는 중소 규모의 상용 프로젝트에 적합합니다. 유료 플랜에는 병렬 빌드, 비공개 리포지토리 및 우선 지원이 포함됩니다. 규정 준수 요구 사항이 있는 엔터프라이즈의 경우 자체 인프라를 갖춘 Jenkins 또는 GitLab CI가 권장됩니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.