Skip to main content

AWS 上の Bitrise: クラウド コントローラー

概要

Cloud Controller を使用すると、AWS 環境で Bitrise が管理するインフラストラクチャのメリットを享受できます。Cloud Controller を使用すると、AWS に関する深い知識がなくてもビルド インフラストラクチャを管理できます。

AWS オファリングのタイプ

AWS AMI には、2 つの基本的なタイプの Bitrise があります。

  • ベアメタル: ビルドは AWS マシン上で直接実行されます。これは、自分のコンピュータ上にある場合と同じように、ビルド環境が永続的であることを意味します。環境をクリーンアップしない限り、ビルドのアーティファクトまたはキャッシュ アイテムが後続のビルドに影響を与える可能性があります。

  • 仮想化/VMベース: Bitrise と同様に、すべてのビルドは独自の仮想マシンで実行され、ビルドが完了すると破棄されます。これは、Apple の仮想化フレームワーク上に構築された Bitrise 管理のマシン上で何百万ものビルドを実行してきた Bitrise の仮想化ソリューションを利用しています。仮想化ソリューションを含む当社の macOS 製品は、Apple シリコン マシンでのみ利用できます。

AMI の更新

Bitrise AMI は、プリインストールされたツールの最新バージョンで常に更新されます。ただし、AWS AMI のレビュー プロセスのため、Xcode および Android Studio の最新バージョンを AMI の形式で提供すると、Bitrise が管理するマシンよりも時間がかかります。現在利用可能なバージョンは、 AWSスタックレポート

Mac 専用ホストの AWS 料金

macOS インスタンスの場合は、専用ホストを割り当てる必要があります。オンデマンド EC2 Mac D dedicated Host の最小ホスト割り当てと請求期間は 24 時間です。詳細については、AWS の公式ドキュメントを参照してください。 Amazon EC2 専用ホストの料金

ベアメタル Linux

ベアメタル Linux AMI は、次の AWS インスタンス タイプで利用できます。

  • t2.2xlarge

  • t2.xlarge

  • c5n.metal

  • c5.xlarge

  • c5.metal

  • c5.4xlarge

  • c5.2xlarge

インスタンスの種類が異なれば、コンピューティングのニーズも異なります。さまざまなインスタンス タイプの機能と機能の詳細については、次を確認してください。 AWS の公式ドキュメント

Androidエミュレータを実行できるのは、 metal インスタンスタイプのみ。他のインスタンス タイプはエミュレータの使用をサポートしていません。

ベアメタル macOS

ベアメタル macOS AMI は、次のインスタンス タイプの Apple Silicon マシンでのみ使用できます。

  • mac2.metal

  • mac2-m2.metal

  • mac2-m2pro.metal

Android エミュレーターは、上記のすべてのインスタンス タイプでサポートされています。

仮想化された macOS

仮想化された macOS AMI は、次のインスタンス タイプの Apple Silicon マシンでのみ使用できます。

  • mac2.metal

  • mac2-m2.metal

  • mac2-m2pro.metal

仮想化は一時的なビルド環境を提供します。仮想マシンはビルドが完了するたびに破棄されます。これは、すべてのビルドが完全にクリーンな環境で実行され、以前のビルドは影響を受けないことを意味します。

ビルドごとに 1 つまたは 2 つの VM を実行するオプションがあります。ビルドのリソース集中度に応じて、2 つの VM を実行すると、ハードウェア コストが大幅に節約される可能性があります。

Androidエミュレーションなし

Apple シリコン アーキテクチャはネストされた仮想化をサポートしていないため、Android エミュレーションは利用できません。

AWS オプションを選択する場合

お客様が管理するインフラストラクチャ上で Bitrise ビルドを実行する必要がある場合、AWS EC2 インスタンスを使用するか、オンプレミス オプションを使用するかの 2 つのオプションが提供されます。

あなたまたはあなたの会社が重要なインフラストラクチャを運用するための AWS アカウントをすでに持っている場合は、AWS インスタンスを使用して Bitrise ビルドを実行することをお勧めします。 AWS インスタンスを使用すると、次のようないくつかの利点があります。

  • プラグアンドプレイ: 必要なツールがすべてプリインストールされた、Amazon Machine Image (AMI) をモバイル固有のビルド環境として提供します。特別な設定は必要ありません。EC2 インスタンスを設定するだけで済みます。

  • 環境の制御: インスタンスの起動時にネットワークとストレージの設定を構成でき (たとえば、Bitrise ビルド用に別のサブネットを構成できます)、すべてのビルド マシンが独自の AWS 環境で実行され、企業のセキュリティに従って動作するようにすることができます。ポリシー。

  • セキュリティ: コードベースは完全に制御下に残ります。

    AWS 環境から流出する情報

    特定の機能を使用することは、AWS 環境を離れることを意味します。たとえば、ビルド キャッシュの使用、ビルド アーティファクトやテスト結果の生成などです。

AWS アカウントをお持ちでない場合、他のクラウドプロバイダーを使用している場合、またはすでに独自のマシンを管理している場合は、こちらを確認することをお勧めします。 当社のオンプレミス ランナー製品

クラウド コントローラの概要

Cloud Controller を使用すると、AWS 環境で Bitrise が管理するインフラストラクチャのメリットを享受できます。Cloud Controller を使用すると、AWS に関する深い知識がなくてもビルド インフラストラクチャを管理できます。

Cloud Controller により、Bitrise on AWS ユーザーは EC2 インフラストラクチャを大規模に運用できるようになります。

  • この自動化は、ベアメタルと VM ベースの両方の macOS サービスをサポートし、macOS 専用ホストの予約、選択した AMI を使用したインスタンスの起動、Bitrise プールへの接続を完全に自動化します。

  • Controller の自動化により、モバイル DevOps チームの時間が節約され、特定のインスタンス数を超えて拡張できない、エラーが発生しやすい手動プロセスが排除されます。

  • エージェント プール定義のインスタンスの数を変更すると、EC2 のコスト削減が可能になります。週末に大規模な macOS マシン プールを縮小することも、構成内の 1 つの数字を変更するだけで簡単に行えます。

  • Bitrise によって AMI の形式で提供される新しいビルド環境にマシンをアップデートすることはシームレスで、モバイル開発者の邪魔になりません。構成により、いつでもアップデートの影響を受けるマシンの割合を定義できます。

  • 各 Bitrise プール内のインスタンスを監視し、その状態や現在実行中のビルドを確認できます。

インバウンドトラフィックは不要

最も厳格な企業ポリシー要件にも適合できるよう、最高のセキュリティ基準を念頭に置いて Bitrise on AWS サービスを作成しました。いずれの場合も、コントローラーとビルド マシンは Bitrise コントロール プレーンへのネットワーク呼び出しを開始するため、外部からの受信トラフィックは必要ありません。

controller-diagram.png

手動設定

AWSでBitriseビルドを実行するには、クラウドコントローラーを使用することをお勧めします。ただし、完全な制御とカスタマイズオプションが必要な場合は、 手動設定

コントローラのエアギャップモード

AWS 環境で Bitrise のコア機能を提供するには、コントローラーとビルド マシンの両方が次の 3 つのアドレスで Bitrise コントロール プレーンにアクセスする必要があります。

  • https://cloud-controller-aws-internal.services.bitrise.io

  • https://exec.bitrise.io

  • https://build-log.services.bitrise.io

追加のQOL機能(ビルドマシンの自動更新や外部IP収集など)には、異なるアドレスの追加リソースとの通信が必要です。AWSで最大限のセキュリティを実現するには、次のオプションを有効にしてこれらの追加機能を無効にすることができます。 エアギャップネットワークモード コントローラーの作成中。

この設定は AWS 構成には影響しません。使用するネットワークが安全に構成されていることを確認する必要があります。