Bitrise는 모바일 개발을 위한 specialized CI/CD 플랫폼으로, 바로 사용할 수 있는 Steps(미리 구성된 iOS 및 Android 앱 빌드, 서명, 게시 모듈)를 중심으로 구축되었습니다. Bitrise, 2024에 따르면, 이 플랫폼은 400개 이상의 즉시 사용 가능한 Steps를 지원하며 Xcode, Gradle, Fastlane, Firebase 및 App Store Connect와 통합됩니다.
핵심 요점
Bitrise는 2016년에 출시된 CI/CD 플랫폼으로, 모바일 개발에 완전히 특화되어 있습니다. GitHub Actions 및 GitLab CI와 같은 범용 솔루션과 달리, Bitrise는 원래 iOS 및 Android 앱 빌드를 자동화하기 위해 설계되었습니다. 이 플랫폼은 클라우드에서 작동하며 macOS와 Linux를 갖춘 자체 호스팅 러너를 제공합니다. Bitrise는 Swift, Kotlin, Flutter, React Native, Cordova 및 Xamarin 등 모든 인기 모바일 스택을 지원합니다.
Bitrise의 주요 장점은 일반적인 모바일 개발 작업(Xcode 빌드, Gradle 어셈블, Fastlane, Firebase Distribution, TestFlight, Google Play)을 위한 미리 구성된 Step 템플릿입니다. 파이프라인 설정은 비주얼 편집기를 통해 몇 분 안에 완료되며, YAML 구성은 bitrise.yml 파일에 자동으로 생성됩니다. 숙련된 사용자를 위해 자동 완성 기능이 있는 YAML 편집기도 제공됩니다.
Bitrise 아키텍처는 Workflow와 Step이라는 두 가지 핵심 개념을 기반으로 합니다. Workflow는 파이프라인을 정의하는 Steps의 시퀀스입니다. 각 프로젝트는 여러 Workflow를 가질 수 있습니다: primary(메인 빌드), deploy(게시), test(테스트 전용). Workflow는 push, PR, tag 또는 일정에 따라 트리거됩니다. Workflow는 웹 인터페이스에서 수동으로 시작할 수도 있어 임시 빌드에 유용합니다.
Step은 단일 작업을 수행하는 원자적 모듈입니다. Steps는 비주얼 편집기에서 드래그하여 순서와 구성을 변경할 수 있습니다. Bitrise는 Xcode Archive & Export, Gradle Runner, CocoaPods Install, Firebase Distribution 및 Slack 알림을 위한 Steps를 제공합니다. 커뮤니티에서도 Steps를 만들며, Step Library를 통해 사용할 수 있습니다. 각 Step에는 필수 및 선택적 입력 파라미터와 후속 Steps에서 사용할 수 있는 출력 변수가 있습니다.
Bitrise는 Pipeline 개념을 지원합니다 — 여러 Workflow를 하나의 파이프라인으로 결합하는 것입니다. Pipeline에는 모든 플랫폼에 대한 기본 빌드와 배포 및 테스트를 위한 별도의 워크플로가 포함될 수 있습니다. 이를 통해 하나의 빌드가 다른 빌드를 트리거하는 복잡한 CI/CD 프로세스를 만들 수 있습니다. Bitrise Stacks는 러너에 사전 설치된 소프트웨어(Xcode, Android SDK, Flutter, Node.js 등)를 결정합니다.
Bitrise는 GitHub, GitLab, Bitbucket 및 Azure DevOps와 통합됩니다. 저장소를 연결할 때, Bitrise는 자동으로 프로젝트 유형(iOS, Android, Flutter)을 감지하고 Workflow 템플릿을 제안합니다. 비공개 저장소의 경우, Bitrise는 OAuth 또는 SSH 키를 통해 액세스를 요청합니다. 하나의 애플리케이션에 여러 저장소를 연결할 수 있습니다.
연결 후, Bitrise는 push 및 PR 시 자동으로 빌드를 시작하기 위해 저장소에 웹훅을 생성합니다. 각 빌드는 고유 번호, 로그 및 아티팩트를 받습니다. 인터페이스는 빌드 기록 탐색, 변경 사항 비교 및 실패한 빌드 재시작을 허용합니다. Bitrise는 정기적인 야간 빌드를 위한 예약 빌드와 커밋 추적을 위한 Jira 통합도 지원합니다.
iOS용 코드 서명은 가장 복잡한 CI/CD 작업 중 하나이며, Bitrise는 이를 가능한 한 간단하게 해결합니다. 플랫폼은 인증서와 프로비저닝 프로파일을 암호화된 형태로 저장하고, 빌드 전에 적절한 키체인에 자동으로 설치한 후 서명된 IPA를 내보냅니다. Certificate and Profile Installer Step은 Bitrise 저장소에서 파일을 다운로드하여 Xcode를 구성합니다. Development, AdHoc, AppStore 및 Enterprise 인증서 유형이 지원됩니다.
App Store Connect에 게시하기 위해, Bitrise는 Xcode Archive & Export를 통한 IPA 업로드 Steps를 제공합니다. Google Play 게시는 Keystore 서명과 함께 Gradle Runner를 사용하며, 그 후 APK/AAB는 Google Play Deploy Step을 통해 Google Play Console에 업로드됩니다. Firebase App Distribution의 경우, Firebase Token과 테스터 그룹만 지정하면 됩니다. Bitrise는 각 게시 전에 버전 번호와 빌드 번호 업데이트를 자동화합니다.
인증서는 웹 인터페이스의 Code Signing 섹션에 업로드됩니다: 개인 키가 있는 P12, 프로비저닝 프로파일(.mobileprovision), Android용 Keystore(.jks/.keystore). Bitrise는 자동으로 각 Workflow 실행 시 iOS 인증서를 키체인에 설치하고 서명된 애플리케이션을 내보냅니다. Android의 경우, Keystore 파일만 업로드하면 Bitrise가 빌드 중 환경 변수를 통해 Gradle에 전달합니다.
iOS 및 Android용 빌드를 생성하고 게시하는 Flutter 애플리케이션의 Workflow를 살펴보겠습니다. Bitrise는 자동으로 Flutter 프로젝트를 감지하고 적절한 Steps를 제안합니다. Workflow에는 Flutter 설치, pub-cache 캐싱, 빌드, 테스트 및 배포가 포함됩니다. iOS 빌드의 경우 코드 서명 인증서가 추가로 필요하며, Bitrise가 자동으로 로드합니다.
Flutter 앱을 빌드할 때, Bitrise는 각 플랫폼에 대해 별도의 구성을 지원합니다. Android 빌드는 Flutter SDK가 있는 Linux 러너에서 실행되고, iOS는 macOS 러너에서 실행됩니다. Workflow에는 조건부 Steps(build_android 및 build_ios)가 포함될 수 있으며, 각각 해당 플랫폼에서만 실행됩니다. React Native 프로젝트의 경우, Bitrise는 npm/nvm 및 Metro bundler와 함께 유사한 Steps 세트를 제공합니다.
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: {}
빌드 후, iOS 및 Android용 Firebase App Distribution Step을 추가할 수 있습니다. 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는 기밀 데이터(API 키, Firebase 토큰, Keystore 비밀번호, Apple ID)를 위한 내장 Secrets 저장소를 제공합니다. Secrets는 웹 인터페이스에서 키-값 쌍으로 정의되며 빌드 로그에서 마스킹됩니다. 애플리케이션 수준 및 Workflow 수준에서 사용할 수 있습니다. Secrets는 저장 후 읽을 수 없으며 덮어쓰기만 가능합니다.
환경 변수(Secret 플래그 없음)는 구성(Xcode 버전, 프로젝트 경로, 빌드 스킴)에 사용됩니다. Bitrise 환경 변수(BITRISE_BUILD_NUMBER, BITRISE_APP_TITLE)는 빌드에 대한 메타 정보를 제공합니다. Secrets는 저장 시 암호화되고 Workflow 실행 중에만 러너에서 복호화됩니다. 변수의 그룹 관리를 위해, Bitrise는 Environment Groups를 지원합니다 — 여러 애플리케이션에 동시에 적용할 수 있는 변수 세트입니다.
Bitrise를 통한 iOS 인증서 관리는 특별히 주목할 만합니다. 플랫폼은 자동으로 빌드 전에 P12와 프로비저닝 프로파일을 시스템 키체인에 설치합니다. Android의 경우, Code Signing 섹션에 업로드된 Keystore 파일이 사용됩니다. 각 인증서 파일은 암호화되어 저장되며 빌드 중에만 복호화됩니다.
- google-play-deploy@3:
inputs:
- package_name: com.example.app
- service_account_json_key: $SERVICE_ACCOUNT_KEY
- app_file: $BITRISE_APK_PATH
Bitrise는 빌드를 위한 다양한 스택(도구 및 SDK가 사전 설치된 이미지)을 제공합니다. 사용 가능한 스택에는 Xcode(버전 14, 15, 16, iOS SDK 17, 18 포함), Android(다양한 버전의 SDK 및 NDK 포함), Flutter, React Native 및 Kotlin Multiplatform이 포함됩니다. 각 스택에는 사전 설치된 도구 및 버전에 대한 설명이 있습니다.
스택 선택은 빌드 시간과 프로젝트 호환성에 영향을 미칩니다. Bitrise는 정기적으로 스택을 업데이트하여 새로운 도구 버전을 추가합니다. 플랫폼 업데이트 시 예기치 않은 변경을 방지하기 위해 bitrise.yml에서 특정 스택 버전을 고정할 수 있습니다. 사용자 지정 종속성의 경우, Script Step을 사용하여 메인 빌드 전에 필요한 패키지를 설치합니다. Bitrise는 Linux 스택용 Docker 이미지도 지원하여 Android 빌드를 위한 사용자 지정 환경을 가능하게 합니다.
자주 묻는 질문
Bitrise는 무료 요금제(월 90분 빌드 시간, 동시 빌드 1개)를 제공합니다. Developer(월 $79)는 3000분, 최대 5개 동시 빌드, 모든 통합을 포함합니다. Enterprise는 맞춤형 가격입니다.
Bitrise는 iOS(Swift, Objective-C), Android(Kotlin, Java), Flutter, React Native, Cordova, Ionic 및 Xamarin을 지원합니다. 각 플랫폼에는 사전 설치된 도구와 Workflow 템플릿이 있습니다.
Bitrise는 추가 설정 없이 iOS 빌드를 위한 macOS 러너를 제공합니다. 플랫폼이 macOS 인프라를 자동으로 관리하며, 애플리케이션 스택에 따라 러너가 선택됩니다.
Bitrise는 인증서를 암호화된 형태로 저장하고 Certificate and Profile Installer Step을 통해 빌드 전에 자동으로 키체인에 설치합니다. Android도 유사하게 Keystore가 업로드되고 서명 시 Gradle에 의해 사용됩니다.
네, Bitrise는 Script Step(bash 스크립트)과 GitHub의 사용자 지정 Step Library를 통해 사용자 지정 Steps를 지원합니다. Bitrise 문서에 따라 고유한 Step을 만들고 Step Library에 게시할 수도 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.