AWS インスタンスを Bitrise ワークスペースに接続する
To successfully launch your instance with the Bitrise AMI on AWS, you need to connect the Bitrise runner pool you added on bitrise.io to the instance, using the token you received during the process. This allows you to run builds on Bitrise using your AWS EC2 instance as your build stack.
成功するには AWS 上の Bitrise AMI を使用してインスタンスを起動しますを接続する必要があります。 bitrise.io に追加した Bitrise エージェント プール プロセス中に受け取ったトークンを使用してインスタンスに接続します。これにより、AWS EC2 インスタンスをビルド スタックとして使用して Bitrise でビルドを実行できるようになります。
インスタンスに接続するには 2 つの方法があります。
-
AWS Secret Manager を使用し、必要なスクリプトをセットアップする インスタンスを起動する。
-
SSH を使用してインスタンスに直接接続します。この方法は、トラブルシューティングの目的でのみ使用することをお勧めします。
AWS Secret Manager の使用
-
Bitrise でエージェント プールを追加するプロセスからトークンを取得します。
-
AWS マネージャーのシークレットを作成する そしてトークンをシークレットに保存します。
-
IAM ロールを作成する シークレットを読み取り、EC2 インスタンスにアタッチする権限が必要です。
-
インスタンスのユーザーデータを変更する: AWS Secret Manager で作成したシークレットを使用して、Bitrise エージェントを起動するコマンドを追加します。
Mac インスタンス
Linux インスタンス
-
ベアメタルの場合:
TOKEN=$(aws --region ${Region} 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
-
仮想化製品の場合は、同時実行数と実行するスタックも指定する必要があります。
利用可能なスタック
次のコマンドを使用して、使用可能なスタックのリストを取得できます。
/opt/virtualization-cli/bin/virtualization-cli list
出力から必要となるのは、
name
スタックの属性。利用可能な同時実行数
同時実行設定に許可される値は 1 または 2 です。
-
1 CC の場合、エージェントは 8 vCPU と 12 GB RAM を備えた 1 つの VM をスケジュールします。
-
2 CC の場合、エージェントはそれぞれ 4 vCPU と 6 GB RAM を備えた 2 つの VM をスケジュールします。
TOKEN=$(aws secretsmanager get-secret-value --secret-id MY_SECRET | jq -r '.SecretString') sudo sed -i '' 's/BITRISE_AGENT_CC/<YOUR_CONCURRENCY_PREFERENCE>/' /Users/ec2-user/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist sudo sed -i '' 's/BITRISE_AGENT_STACK/<YOUR_DESIRED_STACK>/' /Users/ec2-user/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist 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
-
インスタンス接続のトラブルシューティング
EC2 インスタンスでエラーが発生した場合は、まず次のことを確認してください。
-
EC2 ダッシュボードで、インスタンスが EC2 インスタンスの下に表示されているかどうかを確認します。そうでない場合は、インスタンスが正しく起動されていないため、再度起動する必要があります。
-
インスタンスが表示され、スタックしているように見える場合は、 起動 状態の場合は、インスタンスの起動が完了するまで数分間待ちます。
-
インスタンスは出現したが、その状態がどちらでもない場合 起動 または ランニング場合は、新しいインスタンスを開始して終了する必要があります。
-
インスタンスの状態が ランニング しかしステータスは 初期化中、インスタンスの初期化が完了するまで数分間待ちます。
-
インスタンスの状態が ランニング そしてステータスは 障害のある場合は、インスタンスを再起動する必要があります。
-
インスタンスの状態が ランニング、ステータスは 準備ができて ただし、Bitrise ワークスペースのページにインスタンスが表示されない場合は、数分待ってから、それでも表示されない場合は、インスタンスのワークスペースへの接続の確認に進むことをお勧めします。
ワークスペースへのインスタンスの接続を確認するには、EC2 インスタンスに直接接続します。 SSHを使用する。
ベアメタル Mac インスタンス
仮想化された Mac インスタンス
Linux インスタンス
-
インスタンスが次のエンドポイントにアクセスできることを確認してください。
-
https://den.services.bitrise.io
-
https://build-log.services.bitrise.io
これらのエンドポイントにアクセスしないと、インスタンスに接続した後でもビルドを実行できません。
-
-
トークンを取得する エージェント プールの追加プロセスから ビットライズで。
-
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
-
インスタンスが次のエンドポイントにアクセスできることを確認してください。
-
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 sed -i '' 's/BITRISE_AGENT_CC/<YOUR_CONCURRENCY_PREFERENCE>/' /Users/ec2-user/Library/LaunchDaemons/io.bitrise.self-hosted-agent.plist sudo sed -i '' 's/BITRISE_AGENT_STACK/<YOUR_DESIRED_STACK>/' /Users/ec2-user/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
-
インスタンスが次のエンドポイントにアクセスできることを確認してください。
-
https://den.services.bitrise.io
-
https://build-log.services.bitrise.io
これらのエンドポイントにアクセスしないと、インスタンスに接続した後でもビルドを実行できません。
-
-
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 CLI をエージェント モードで実行するように設定できます。これにより、セルフホスト エージェントでビルドを実行するときに永続的なビルド環境をクリーンアップできます。
Bitrise では、ビルドが開始されるたびに新しい仮想マシンが作成され、ビルドが完了すると仮想マシンは破棄されます。ただし、Bitrise ビルドを永続的なビルド環境で実行することはできます。このような環境では、あるビルドの製品が後続のビルドに影響を与える可能性があります。
セルフホスト型エージェントでは、1 つのエージェントが複数のビルドを (同時にまたは次々に) 実行します。これにより、ローカル ファイル システム上のビルド間でデータを共有できますが、あるビルドが別のビルドに影響を与えないように注意する必要もあります。
この問題を回避するには、Bitrise CLI を次の環境で実行するように設定できます。 エージェントモード。エージェントモードでは、 agent-config.yml
ホストマシンの ~/.bitrise/
ディレクトリ。このファイルでは、新しいビルドの開始時またはビルドの終了時にクリーンアップするディレクトリを指定できます。単純なクリーンアップよりも高度な使用例がある場合は、独自のカスタム スクリプトを実行することもできます。
エージェントモードの設定
-
を追加します。
agent-config.yml
ファイルをあなたの~/.bitrise/
ディレクトリ。 -
クリーンアップ操作を実行するフォルダーを正確に構成したい場合は、
bitrise_dirs
財産。このプロパティはデフォルト設定をオーバーライドします。たとえば、BITRISE_DEPLOY_DIR
環境変数をデフォルトよりも大きくします。 -
下
bitrise_dirs
、ビルドの開始時または終了時に何らかのアクションを実行するディレクトリを定義します。KEY: path
フォーマット。たとえば、すべてのソース コード チェックアウト、デプロイ可能な成果物、およびデプロイ可能なテスト結果成果物に対して個別のディレクトリを定義できます。# Customize the common Bitrise directories bitrise_dirs: # Root directory for all Bitrise data produced at runtime BITRISE_DATA_HOME_DIR: /opt/bitrise # Directory for source code checkout. BITRISE_SOURCE_DIR: /opt/bitrise/workspace/$BITRISE_APP_SLUG # Directory for deployable artifacts. BITRISE_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/artifacts # Directory for deployable test result artifacts. BITRISE_TEST_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/test_results # Directory for the html reports BITRISE_HTML_REPORT_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/html_reports
Multiple projects of the same Workspace
Don’t forget that multiple projects of the same Workspace could run on the same agent. Make sure to always include
$BITRISE_APP_SLUG
in the directory hierarchy to separate projects and their source code checkouts.# wrong: BITRISE_SOURCE_DIR: /opt/bitrise/workspace # correct: BITRISE_SOURCE_DIR: /opt/bitrise/$BITRISE_APP_SLUG/workspace
-
追加
hooks
の財産agent-config.yml
ファイル。このプロパティは、ビルドの開始時または終了時に実行するアクションを定義します。これには 4 つの異なるパラメータがあります。-
cleanup_on_build_start
: 新しいビルドの開始時にクリーンアップされるディレクトリを定義します。 -
cleanup_on_build_end
: ビルドが完了するたびにクリーンアップされるディレクトリを定義します。ビルドに失敗した場合の実行は保証されません。 -
do_on_build_start
: 新しいビルドの開始時に実行されるカスタム スクリプトを定義します。 -
do_on_build_end
: ビルドの完了時に実行されるカスタム スクリプトを定義します。ビルドが失敗した場合の実行は保証されません。
Nested Workflows
A Script Step in a Workflow can execute
bitrise run nested_workflow
and trigger a nested workflow. This nested Workflow inherits all the envs and parameters of the parent Workflow, and the parent Workflow waits for the completion of the nested Workflow. When the nested Workflow is launched this way, hooks and directory cleanups are not executed in this process to avoid unexpected behavior. -
-
To test the agent mode, start a build. The log should show the following message at the top:
Running in agent mode Config file: .bitrise/agent-config.yml
一般的な構成例
状態を最小限に抑え、信頼性を最大限に高めるために、各ビルドには一意のディレクトリが割り当てられます。ソース コードはビルドごとに最初からチェックアウトされます。
bitrise_dirs: BITRISE_DATA_HOME_DIR: /opt/bitrise BITRISE_SOURCE_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/workspace BITRISE_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/artifacts BITRISE_TEST_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/test_results hooks: # Since dirs are unique to each build, there is nothing to clean up here: cleanup_on_build_start: [] # Clean up everything after the build ends: cleanup_on_build_end: - $BITRISE_SOURCE_DIR - $BITRISE_DEPLOY_DIR - $BITRISE_TEST_DEPLOY_DIR
ソース コードのチェックアウトを高速化するために、以前のビルドのソース コード ディレクトリを再利用できます。
bitrise_dirs: BITRISE_DATA_HOME_DIR: /opt/bitrise # Use a warm clone of the repo for all builds: BITRISE_SOURCE_DIR: /opt/bitrise/$BITRISE_APP_SLUG/workspace # For artifacts and test results, it's still a good idea to place them into unique dirs BITRISE_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/artifacts BITRISE_TEST_DEPLOY_DIR: /opt/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/test_results hooks: # Since dirs are unique to each build, there is nothing to clean up here: cleanup_on_build_start: [] # Optional: clean up artifacts and test results. # Note that $BITRISE_SOURCE_DIR is NOT clean up here! cleanup_on_build_end: - $BITRISE_DEPLOY_DIR - $BITRISE_TEST_DEPLOY_DIR