Skip to main content

永続的なビルド環境のクリーンアップ

概要

Bitrise CLI をエージェント モードで実行するように設定できます。これにより、セルフホスト エージェントでビルドを実行するときに永続的なビルド環境をクリーンアップできます。

Bitriseでは、ビルドが開始されるたびに新しい仮想マシンが作成され、ビルドが終了すると破棄されます。ただし、永続的なビルド環境でBitriseビルドを実行することもできます。たとえば、 オンプレミスランナー または AWS EC2インスタンスでビルドを実行するこのような環境では、1 つのビルドの製品が後続のビルドに影響を与える可能性があります。

セルフホスト型インフラストラクチャでは、1 つの Bitrise ランナーが複数のビルドを実行します。これにより、ローカル ファイルシステム上のビルド間でデータを共有できますが、1 つのビルドが別のビルドに影響を与えないように注意する必要があります。

この問題を回避するには、Bitrise CLI を次の環境で実行するように設定できます。 エージェントモード。エージェントモードでは、 agent-config.yml ホストマシンの ~/.bitrise/ ディレクトリ。このファイルでは、新しいビルドの開始時またはビルドの終了時にクリーンアップするディレクトリを指定できます。単純なクリーンアップよりも高度な使用例がある場合は、独自のカスタム スクリプトを実行することもできます。

エージェントモードの設定

リナックス

macOS

  1. を追加します。 agent-config.yml ファイルをあなたの ~/.bitrise/ ディレクトリ。

  2. クリーンアップ操作を実行するフォルダを正確に設定したい場合は、 bitrise_dirs 財産。

    このプロパティはデフォルト設定を上書きします。たとえば、 BITRISE_DEPLOY_DIR 環境変数をデフォルトよりも高く設定します。

  3. 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
  4. 追加 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 ネストされたワークフローをトリガーします。このネストされたワークフローは、親ワークフローのすべての環境とパラメータを継承し、親ワークフローはネストされたワークフローの完了を待機します。ネストされたワークフローがこのように起動されると、予期しない動作を回避するために、このプロセスではフックとディレクトリのクリーンアップは実行されません。

  5. エージェント モードをテストするには、ビルドを開始します。ログの上部に次のメッセージが表示されます。

    Running in agent mode
    Config file: .bitrise/agent-config.yml
  1. 追加する agent-config.yml ファイルに ~/.bitrise/ ディレクトリ。

  2. クリーンアップ操作を実行するフォルダを正確に設定したい場合は、 bitrise_dirs 財産。

    このプロパティはデフォルト設定を上書きします。たとえば、 BITRISE_DEPLOY_DIR 環境変数をデフォルトよりも高く設定します。

  3. 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
  4. 追加 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 ネストされたワークフローをトリガーします。このネストされたワークフローは、親ワークフローのすべての環境とパラメータを継承し、親ワークフローはネストされたワークフローの完了を待機します。ネストされたワークフローがこのように起動されると、予期しない動作を回避するために、このプロセスではフックとディレクトリのクリーンアップは実行されません。

  5. エージェント モードをテストするには、ビルドを開始します。ログの上部に次のメッセージが表示されます。

    Running in agent mode
    Config file: .bitrise/agent-config.yml

一般的な構成例

例1 完全に分離されたビルド

状態を最小限に抑え、信頼性を最大限に高めるために、各ビルドには一意のディレクトリが割り当てられます。ソース コードはビルドごとに最初からチェックアウトされます。

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

例2 ウォーム チェックアウト用の共有ソース コード ディレクトリ

ソース コードのチェックアウトを高速化するために、以前のビルドのソース コード ディレクトリを再利用できます。

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