永続的なビルド環境のクリーンアップ
Bitrise CLI をエージェント モードで実行するように設定できます。これにより、セルフホスト エージェントでビルドを実行するときに永続的なビルド環境をクリーンアップできます。
Bitriseでは、ビルドが開始されるたびに新しい仮想マシンが作成され、ビルドが終了すると破棄されます。ただし、永続的なビルド環境でBitriseビルドを実行することもできます。たとえば、 オンプレミスランナー または AWS EC2インスタンスでビルドを実行するこのような環境では、1 つのビルドの製品が後続のビルドに影響を与える可能性があります。
セルフホスト型インフラストラクチャでは、1 つの Bitrise ランナーが複数のビルドを実行します。これにより、ローカル ファイルシステム上のビルド間でデータを共有できますが、1 つのビルドが別のビルドに影響を与えないように注意する必要があります。
この問題を回避するには、Bitrise CLI を次の環境で実行するように設定できます。 エージェントモード。エージェントモードでは、 agent-config.yml
ホストマシンの ~/.bitrise/
ディレクトリ。このファイルでは、新しいビルドの開始時またはビルドの終了時にクリーンアップするディレクトリを指定できます。単純なクリーンアップよりも高度な使用例がある場合は、独自のカスタム スクリプトを実行することもできます。
エージェントモードの設定
リナックス
macOS
-
を追加します。
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
同じワークスペースの複数のプロジェクト
同じワークスペースの複数のプロジェクトが同じエージェント上で実行される可能性があることを忘れないでください。必ず以下を含めてください。
$BITRISE_APP_SLUG
ディレクトリ階層でプロジェクトとそのソース コードのチェックアウトを分離します。# wrong: BITRISE_SOURCE_DIR: /opt/bitrise/workspace # correct: BITRISE_SOURCE_DIR: /opt/bitrise/workspace/$BITRISE_APP_SLUG
-
追加
hooks
の財産agent-config.yml
ファイル。このプロパティは、ビルドの開始時または終了時に実行するアクションを定義します。これには 4 つの異なるパラメータがあります。-
cleanup_on_build_start
: 新しいビルドの開始時にクリーンアップされるディレクトリを定義します。 -
cleanup_on_build_end
: ビルドが完了するたびにクリーンアップされるディレクトリを定義します。ビルドに失敗した場合の実行は保証されません。 -
do_on_build_start
: 新しいビルドの開始時に実行されるカスタム スクリプトを定義します。 -
do_on_build_end
: ビルドの完了時に実行されるカスタム スクリプトを定義します。ビルドが失敗した場合の実行は保証されません。
ネストされたワークフロー
あ スクリプト ワークフローのステップは実行できる
bitrise run nested_workflow
ネストされたワークフローをトリガーします。このネストされたワークフローは、親ワークフローのすべての環境とパラメータを継承し、親ワークフローはネストされたワークフローの完了を待機します。ネストされたワークフローがこのように起動されると、予期しない動作を回避するために、このプロセスではフックとディレクトリのクリーンアップは実行されません。 -
-
エージェント モードをテストするには、ビルドを開始します。ログの上部に次のメッセージが表示されます。
Running in agent mode Config file: .bitrise/agent-config.yml
-
追加する
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: /Users/ec2-user/bitrise # Directory for source code checkout. BITRISE_SOURCE_DIR: /Users/ec2-user/bitrise/workspace/$BITRISE_APP_SLUG # Directory for deployable artifacts. BITRISE_DEPLOY_DIR: /Users/ec2-user/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/artifacts # Directory for deployable test result artifacts. BITRISE_TEST_DEPLOY_DIR: /Users/ec2-user/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/test_results # Directory for the html reports BITRISE_HTML_REPORT_DIR: /Users/ec2-user/bitrise/$BITRISE_APP_SLUG/$BITRISE_BUILD_SLUG/html_reports
同じワークスペースの複数のプロジェクト
同じワークスペースの複数のプロジェクトが同じエージェント上で実行される可能性があることを忘れないでください。必ず以下を含めてください。
$BITRISE_APP_SLUG
ディレクトリ階層でプロジェクトとそのソース コードのチェックアウトを分離します。# wrong: BITRISE_SOURCE_DIR: /opt/bitrise/workspace # correct: BITRISE_SOURCE_DIR: /opt/bitrise/workspace/$BITRISE_APP_SLUG
-
追加
hooks
財産にagent-config.yml
ファイル。このプロパティは、ビルドの開始時または終了時に実行するアクションを定義します。4 つの異なるパラメータがあります。-
cleanup_on_build_start
: 新しいビルドが開始されたときにクリーンアップされるディレクトリを定義します。 -
cleanup_on_build_end
: ビルドが終了するたびにクリーンアップされるディレクトリを定義します。ビルドが失敗した場合に実行されることは保証されません。 -
do_on_build_start
: 新しいビルドが開始されたときに実行されるカスタム スクリプトを定義します。 -
do_on_build_end
: ビルドが完了したときに実行されるカスタム スクリプトを定義します。ビルドが失敗した場合は実行が保証されません。
ネストされたワークフロー
あ スクリプト ワークフローのステップは実行できる
bitrise run nested_workflow
ネストされたワークフローをトリガーします。このネストされたワークフローは、親ワークフローのすべての環境とパラメータを継承し、親ワークフローはネストされたワークフローの完了を待機します。ネストされたワークフローがこのように起動されると、予期しない動作を回避するために、このプロセスではフックとディレクトリのクリーンアップは実行されません。 -
-
エージェント モードをテストするには、ビルドを開始します。ログの上部に次のメッセージが表示されます。
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