AWS EC2 インスタンス上で Bitrise ビルドを実行する
Bitrise は、AWS Marketplace で Amazon Machine Image (AMI) として入手できます。 Bitrise AMI を使用すると、独自のビルド インフラストラクチャの代わりに独自の AWS リソースを使用して Bitrise ビルドを実行できます。
そのためには、次のことを行う必要があります。
-
Bitrise でエージェント プールを構成する: ビルド用のエージェント プールを設定し、Bitrise ワークスペースを AWS EC2 インスタンスに接続するために必要なトークンを取得します。
-
Bitrise AMI にサブスクライブして AWS EC2 インスタンスを起動する。 Mac または Linux インスタンスを起動できます。 Mac インスタンスの場合は、インスタンスを起動する前に専用ホストを割り当てる必要があります。
-
トークンを使用してインスタンスを Bitrise ワークスペースに接続します。これにより、Bitrise エージェントが EC2 インスタンス上でビルドを実行できるようになります。
エージェントプールの構成
重要
現時点では見つからないことに注意してください。 ビットライズエージェント 私たちのチームが特別に有効にしていない場合は、ワークスペース設定のオプションを選択してください。独自のインフラストラクチャ上で Bitrise ビルドを実行することに興味がある場合は、 お問い合わせ!
Bitrise エージェントを独自のハードウェア (自社のオンプレミスまたは AWS インスタンスのいずれか) で実行する前に、エージェント プールを予約し、トークンで認証する必要があります。
そうするために:
-
Bitriseにログインし、右上のアカウントセレクタードロップダウンメニューを開きます。
-
ワークスペースを見つけ、その名前の横にある小さな歯車のアイコンをクリックして、ワークスペースのプロファイルページに移動します。
-
左側で選択します ビットライズエージェント。
-
で Bitrise エージェント プール ページ、クリック 。
-
に名前を入力します 名前 フィールドをクリックして 。
-
トークンを受け取ります。このトークンをコピーします。認証に必要になります。
-
Bitrise で必要なアプリを開き、クリックします
。 -
クリック スタックとマシン タブ。
ワークフローエディターに移動し、 -
スタック選択ドロップダウン メニューで独自のスタックを見つけます。それが呼び出されます。 セルフホスト型エージェント: <エージェント プール名>。
たとえば、プールに名前を付けた場合、
my-pool
、スタックが呼び出されます 自己ホスト型エージェント: my-pool。 -
クリック 保存 右上隅にあります。
これで、予約されたエージェント プールを使用してビルドが実行されるようになります。ビルドは独自のハードウェアまたは AWS EC2 インスタンスで実行できます。
Bitrise AMI の EC2 インスタンスの起動
独自の Amazon EC2 インスタンスで Bitrise エージェントを実行するための専用の Bitrise Amazon Machine Image (AMI) を提供します。
AWS EC2 インスタンスは、AWS UI または CLI でセットアップできます。
AWS UI でのインスタンスの起動
AWS UI 経由でインスタンスを起動します。
Mac インスタンス
Linux インスタンス
-
AWS で Bitrise AMI にサブスクライブします。 AMI サブスクリプション。
-
AWS 上に専用ホストを作成します。EC2 ダッシュボードで、 インスタンス メニュー、選択 専用ホストをクリックして、 専用ホストを割り当てる。
-
必須フィールドに入力します。
-
名札: これはインスタンスの名前になります。
-
:
-
:
-
: 使用するサブネットによって異なります。選択したゾーンにノード容量がない場合は、AWS から通知されます。
-
量: 作成するホストの数。
-
-
専用ホストのインスタンスを起動します。
メニューを選択して 。 -
の必須フィールドに入力します。 インスタンスを起動する ページ:
名前とタグ セクション:
-
名前: インスタンスの名前。
アプリケーションとOSのイメージ セクション:
-
Amazon マシンイメージ (AMI): サブスクライブした Bitrise AMI を選択します。
インスタンスタイプ セクション:
-
インスタンスタイプ: 選択する 。
キーペア(ログイン) セクション:
-
キーペア名 - 必須:
ネットワーク設定 セクション - クリック 設定を変更するには:
-
: ドロップダウン メニューから仮想プライベート クラウドを選択します。
-
: ドロップダウン メニューから優先サブネットを選択するか、オンのままにします。 。
-
ファイアウォール(セキュリティグループ): 新しいセキュリティ グループを作成するか、既存のセキュリティ グループを選択します。
ストレージの構成 セクション:
-
ストレージボリュームのサイズをギガバイト単位で設定します。
-
ドロップダウン メニューからルート ボリュームのタイプを選択します。
高度な詳細 セクション:
-
: を選択 ドロップダウン メニューからオプションを選択します。
-
: を選択 ドロップダウン メニューからオプションを選択します。
-
: 事前に作成した専用ホストのホストIDを選択します。
-
-
クリック
。起動には最大 10 ~ 15 分かかる場合があります。システム ステータス チェックとインスタンス ステータス チェックが表示されます。インスタンスの準備が完了すると、両方のチェックが緑色になります。
-
AWS で Bitrise AMI にサブスクライブします。 AMI サブスクリプション。
-
インスタンスを起動するには インスタンス起動ウィザード。
-
の必須フィールドに入力します。 インスタンスを起動する ページ:
名前とタグ セクション:
-
名前: インスタンスの名前。
アプリケーションとOSのイメージ セクション:
-
Amazon マシンイメージ (AMI): サブスクライブした Bitrise AMI を選択します。
インスタンスタイプ セクション:
-
インスタンスタイプ: x86_64 Linux メタル インスタンスを選択します。
キーペア(ログイン) セクション:
-
キーペア名 - 必須:
ネットワーク設定 セクション - クリック 設定を変更するには:
-
: ドロップダウン メニューから仮想プライベート クラウドを選択します。
-
: ドロップダウン メニューから優先サブネットを選択するか、オンのままにします。 。
-
ファイアウォール(セキュリティグループ): 新しいセキュリティ グループを作成するか、既存のセキュリティ グループを選択します。
ストレージの構成 セクション:
-
ストレージボリュームのサイズをギガバイト単位で設定します。
-
ドロップダウン メニューからルート ボリュームのタイプを選択します。
-
-
クリック
。起動には最大 10 ~ 15 分かかる場合があります。システム ステータス チェックとインスタンス ステータス チェックが表示されます。インスタンスの準備が完了すると、両方のチェックが緑色になります。
AWS CLI でのインスタンスの起動
Mac インスタンス
Linux インスタンス
-
マーケットプレイスで Bitrise AMI にサブスクライブし、そのマーケットプレイス ID を取得します。 AMI ID を検索する。
-
AWS EC2 で専用ホストを予約します。
aws ec2 allocate-hosts \ --instance-type mac2.metal \ --quantity 1 \ --availability-zone <YOUR_AVAILABILITY_ZONE> \ --tag-specifications 'ResourceType=dedicated-host,Tags={Key=Name,Value=Example}'
インスタンスタイプは次のようにする必要があります
mac2.metal
そして必ず最良のものを選択してください アベイラビリティゾーン あなたのために。出力は次のようになります。
{ "HostIds": [ "h-07879acf49EXAMPLE" ] }
後で必要になるため、ホスト ID を保存します。
-
Bitrise macOS AMI から EC2 mac2 インスタンスを起動します。
aws ec2 run-instances \ --image-id <BITRISE_MARKETPLACE_AMI_ID> \ --instance-type mac2.metal \ --subnet-id <YOUR_SUBNET_ID> \ --security-group-ids <YOUR_SECURITY_GROUP_ID> \ --key-name <YOUR_KEYPAIR_NAME> \ --placement 'AvailabilityZone=<YOUR_PREFERRED_AZ>,HostId=<DEDICATED_HOST_ID>,Tenancy=host'
-
マーケットプレイスで Bitrise AMI にサブスクライブし、そのマーケットプレイス ID を取得します。 AMI ID を検索する。
-
Bitrise Linux AMI から EC2 Linux インスタンスを起動します。
aws ec2 run-instances \ --image-id <BITRISE_MARKETPLACE_AMI_ID> \ --instance-type <YOUR_X86_64_METAL_INSTANCE_TYPE> \ --subnet-id <YOUR_SUBNET_ID> \ --security-group-ids <YOUR_SECURITY_GROUP_ID> \ --key-name <YOUR_KEYPAIR_NAME> \
EC2 インスタンスの接続とセキュリティ
EC2 インスタンスの準備ができたら、インスタンスに接続できること、および関連する Bitrise サービスに接続できることを確認します。 SSH を使用してインスタンスに接続するか、Mac インスタンスの場合は VNC を使用してインスタンスに接続できます。
インスタンスにパスワードを設定することもできます。
インスタンスのパスワード
デフォルトでは、Bitrise AMI にはユーザー パスワードがありません。希望のパスワードを設定するのは加入者の責任です。
Mac インスタンスの場合、ユーザー パスワードとデフォルトのパスワードを設定する必要があります。 login.keychain
パスワード:
sudo /usr/bin/dscl . -passwd /Users/ec2-user security set-keychain-password -o "" -p "<new password>" ~/Library/Keychains/login.keychain-db
Linux インスタンスの場合:
sudo passwd
インスタンスへの接続
SSH を使用してインスタンスに接続するには、TCP ポート 22 を使用することをお勧めします。 SSH 経由でインスタンスに接続するには:
ssh -i ~/.ssh/key ubuntu@<your-aws-instance>
Mac インスタンスをお持ちの場合は、VNC で接続することもできます。 TCP ポート 5900 の使用をお勧めします。接続するには:
open vnc://ec2-user@<aws-mac2-instance>
セキュリティグループの設定
必ず両方のポートの使用を有効にしてください。 セキュリティグループの設定 インスタンスの!
Bitrise サービスへの接続
Bitrise ビルドを実行できるようにするには、インスタンスが次のエンドポイントにアクセスできる必要があります。
-
https://den.services.bitrise.io
-
https://build-log.services.bitrise.io
起動後のディスクの事前ウォーミング
起動直後にディスクを事前にウォームアップすることで、ESB のパフォーマンスを向上させることができます。実行する必要があるのは 1 回だけです。
Mac インスタンス
Linux インスタンス
-
export cnt=$(($(df -h | grep "/$" | awk '{print $4}' | grep -oE "[0-9]+")-2)) dd if=/dev/random of=bigfile bs=1g count=$cnt
-
sudo dd if=/dev/xvdf of=/dev/null bs=1M
開発/xvfd
を注意
xvdf
あなたのマシンでは異なるかもしれません
Mac インスタンスでのディスク サイズの増加
EC2 Mac インスタンスにデフォルト (400 GB) よりも大きな EBS ストレージを設定した場合は、macOS が利用可能なディスク容量をすべて使用できるようにパーティションのサイズを変更します。
PDISK=$(diskutil list physical external | head -n1 | cut -d" " -f1) APFSCONT=$(diskutil list physical external | grep "Apple_APFS" | tr -s " " | cut -d" " -f8) yes | sudo diskutil repairDisk $PDISK sudo diskutil apfs resizeContainer $APFSCONT 0
詳細については、を参照してください。 AWS macOS EC2 ドキュメント。
AWS インスタンスを Bitrise ワークスペースに接続する
成功した後は AWS 上の Bitrise AMI を使用してインスタンスを起動しますを接続する必要があります。 bitrise.io に追加した Bitrise エージェント プール プロセス中に受け取ったトークンを使用してインスタンスに接続します。これにより、AWS EC2 インスタンスをビルド スタックとして使用して Bitrise でビルドを実行できるようになります。
接続を構成するには 2 つの方法があります。
-
AWS Secret Manager の使用。この方法をお勧めします。
-
インスタンスに接続し、コマンドでトークンを直接使用します。
AWS Secret Manager の使用
-
インスタンスが次のエンドポイントにアクセスできることを確認してください。
-
https://den.services.bitrise.io
-
https://build-log.services.bitrise.io
これらのエンドポイントにアクセスしないと、インスタンスに接続した後でもビルドを実行できません。
-
-
Bitrise でエージェント プールを追加するプロセスからトークンを取得します。
-
AWS マネージャーのシークレットを作成する そしてトークンをシークレットに保存します。
-
IAM ロールを作成する シークレットを読み取り、EC2 インスタンスにアタッチする権限が必要です。
-
インスタンスのユーザーデータを変更する: AWS Secret Manager で作成したシークレットを使用して、Bitrise エージェントを起動するコマンドを追加します。
mac2 インスタンス
Linux インスタンス
-
TOKEN=$(aws secretsmanager get-secret-value --secret-id MY_SECRET | jq -r '.SecretString') sudo sed -i '' “s/BITRISE_AGENT_TOKEN/$TOKEN/” ~/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist
-
TOKEN=$(aws secretsmanager get-secret-value --secret-id MY_SECRET | jq -r '.SecretString') sudo sed -i “s/BITRISE_AGENT_TOKEN/$TOKEN/” /etc/systemd/system/bitrise-den-agent.service sudo systemctl start bitrise-den-agent.service
-
インスタンスに直接接続する
mac2 インスタンス
Linux インスタンス
-
インスタンスが次のエンドポイントにアクセスできることを確認してください。
-
https://den.services.bitrise.io
-
https://build-log.services.bitrise.io
これらのエンドポイントにアクセスしないと、インスタンスに接続した後でもビルドを実行できません。
-
-
Bitrise でエージェント プールを追加するプロセスからトークンを取得します。
-
AWS 上のインスタンスに接続し、そこで次のコマンドを実行します。
sudo sed -i '' 's/BITRISE_AGENT_TOKEN/<YOUR_AGENT_POOL_TOKEN>/' ~/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist sudo launchctl load -w /Users/ec2-user/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist
-
エージェント プールがインスタンス上で実行されていることを検証します。
ps aux | grep bitrise-den-agent
-
AWS 上のインスタンスに接続し、そこで次のコマンドを実行します。
sudo sed -i 's/BITRISE_AGENT_TOKEN/<YOUR_AGENT_POOL_TOKEN>/' /etc/systemd/system/bitrise-den-agent.service sudo systemctl start bitrise-den-agent.service
-
エージェント プールがインスタンス上で実行されていることを検証します。
ps aux | grep bitrise-den-agent or sudo systemctl status bitrise-den-agent.service
Bitrise AMI 用のプリインストールされたツール
Bitrise AMI には、クラウド製品の Bitrise スタックと同様に、一連のプリインストールされたツールが付属しています。私たちは両方に同一のツールを提供することを目指していますが、これが常に可能であるとは限りません。特定のスタックで使用可能なツールの完全なリストについては、システム レポートを確認してください。