Bitriseはモバイル開発に特化したCI/CDプラットフォームで、すぐに使えるSteps(ビルド、署名、公開のための事前設定済みモジュール)を中心に構築されています。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という2つの主要な概念に基づいています。Workflowはパイプラインを定義するStepsのシーケンスです。各プロジェクトは複数のWorkflowを持つことができます:primary(メインビルド)、deploy(公開)、test(テストのみ)。Workflowはプッシュ、PR、タグ、またはスケジュールによってトリガーされます。WorkflowはWebインターフェースから手動で起動することもでき、アドホックビルドに便利です。
Stepは単一のタスクを実行するアトミックなモジュールです。Stepsはビジュアルエディターでドラッグして順序や設定を変更できます。BitriseはXcode Archive & Export、Gradle Runner、CocoaPods Install、Firebase Distribution、Slack通知のためのStepsを提供しています。コミュニティもStepsを作成しており、Step Libraryから利用できます。各Stepには必須およびオプションの入力パラメーターと、後続のStepで使用できる出力変数があります。
BitriseはPipelineの概念をサポートしています。これは複数のWorkflowを1つのパイプラインに結合するものです。Pipelineにはすべてのプラットフォームのプライマリビルドと、デプロイおよびテスト用の個別のワークフローを含めることができます。これにより、1つのビルドが別のビルドをトリガーする複雑なCI/CDプロセスを作成できます。Bitrise Stacksはランナーにプリインストールされるソフトウェア(Xcode、Android SDK、Flutter、Node.jsなど)を決定します。
BitriseはGitHub、GitLab、Bitbucket、Azure DevOpsと統合します。リポジトリを接続する際、Bitriseは自動的にプロジェクトタイプ(iOS、Android、Flutter)を検出し、Workflowテンプレートを提案します。プライベートリポジトリの場合、BitriseはOAuthまたはSSHキーを介してアクセスを要求します。1つのアプリケーションに複数のリポジトリを接続できます。
接続後、BitriseはプッシュとPR時に自動的にビルドを開始するためにリポジトリにWebhookを作成します。各ビルドは一意の番号、ログ、アーティファクトを受け取ります。インターフェースではビルド履歴の閲覧、変更の比較、失敗したビルドの再起動が可能です。Bitriseは定期的な夜間ビルドのためのスケジュールビルドと、コミット追跡のためのJira統合もサポートしています。
iOSのコード署名はCI/CDの中でも最も複雑なタスクの1つですが、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は各公開の前にバージョン番号とビルド番号の更新を自動化します。
証明書はWebインターフェースの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はWebインターフェースでキーと値のペアとして定義され、ビルドログでマスクされます。これらはアプリケーションレベルと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アプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。