Skip to main content

ステップバンドル

概要

ステップ バンドルを使用すると、YAML ファイルからステップを手動でコピーして貼り付ける必要がなく、任意のワークフロー内のステップとステップのシーケンスを便利な方法で再利用できます。

ステップ バンドルを使うと、複数のステップを 1 つのユニットにグループ化できます。Step Bundle を使うと、YAML 設定ファイルから手動でコピーして貼り付けることなく、ステップやステップのシーケンスを再利用できます

ステップバンドルは、というルートレベルのエンティティで設定されます。 step_bundles。Step バンドルをどのバンドルにも挿入できます。 ワークフロー。ユーティリティワークフローとは異なり、 ワークフローチェーニング、ステップバンドルはワークフローのどこにでも配置できます。

ビルドを実行すると、バンドル内の各ステップは、バンドルが挿入された位置で実行されます。

ステップバンドルの作成

ワークフローエディター

コンフィギュレーション YAML

  1. ワークフローエディターを開きます。

  2. 左側で [] を選択します。 ステップバンドル

  3. クリック ステップバンドルの作成 バンドルがない場合。

    Step Bundle がすでに 1 つ以上ある場合は、中央のドロップダウンメニューを開いてをクリックします。 ステップバンドルの作成

    create-step-bundle.png
  4. ダイアログで、バンドルの名前を入力します。

    create-bundle-dialog.png
  5. 既存の Step バンドルがある場合は、ドロップダウンメニューからいずれかを選択できます。新しい Step バンドルは既存のバンドルのコピーになります。

  6. 完了したら、をクリックします ステップバンドルの作成

  7. をクリックして最初の Step を追加 ステップまたはステップバンドルを追加

    ステップバンドルを別のステップバンドルに追加することをネストと呼びます。 ネストステップバンドル.

  8. すでに追加されているステップまたはバンドルの上または下にカーソルを置き、プラス記号をクリックして、ステップまたはバンドルを追加します。

  9. の下で新しいバンドル入力を設定します [構成] タブをクリックしてクリック + 入力を追加新しいバンドル入力 ダイアログでは、バンドル内の複数のステップを管理するための入力変数を定義できます。Steps 内のキーを参照して、各ワークフローにカスタム値を割り当ててください。

    bundleinput.png
  1. プロジェクトの設定YAMLを開く

  2. 追加 step_bundles エンティティを YAML ファイルの最上位レベルに追加し、名前を付けます。バンドルはこの名前で参照されます。

    format_version: 11
    step_bundles:
      install_deps:
  3. を追加 steps バンドルの下にプロパティを指定し、実行したいステップを追加します。 参考ステップ これはワークフローの場合と同じです。

    この例では、 キャッシュを復元する ステップと npm ステップ。

    format_version: 11
    step_bundles:
      install_deps:
        steps:
        - restore-cache@1: {}
        - npm@1: {}
    
  4. 既存のワークフローにステップ バンドルを追加します。構文は次のようになります。 bundle::<bundle-name>

    workflows:
      ci:
        steps:
        - [email protected]: {}
        - bundle::install_deps: {}
        - deploy-to-bitrise-io@2: {} 

ユーティリティワークフローに基づくステップバンドルの作成

を基に Step バンドルを作成できます ユーティリティワークフロー。バンドルには、ユーティリティワークフローに含まれていたすべてのステップが含まれます。ただし、ユーティリティワークフローとは異なり、ステップバンドルは別のワークフロー内のどこにでも配置できます。

  1. ワークフローエディターを開きます。

  2. 左側で [] を選択します。 ステップバンドル

  3. から に基づいて ドロップダウンメニューで、ユーティリティワークフローを選択します。

    Screenshot_2025-03-25_at_09_59_54.png
  4. クリック ステップバンドルの作成

ネストステップバンドル

ステップバンドルではネスティングが可能です。ステップバンドルを別のステップバンドルに追加できます。これにより、部品を簡単に交換できる大規模で複雑な構成を作成できます。別の Step バンドルには、必要な数だけ Step バンドルを追加できます

ワークフローエディター

コンフィギュレーション YAML

  1. ワークフローエディターを開きます。

  2. 左側で [] を選択します。 ステップバンドル

  3. 中央のドロップダウンメニューからステップバンドルを選択します。

  4. 空のバンドルの場合は、をクリックします [ステップ] または [ステップバンドルを追加]

    バンドルにすでにステップが含まれている場合は、ステップの間にカーソルを置いてプラス記号をクリックします。

    add-bundle-to-bundle.png
  5. ダイアログで、 ステップバンドル タブ。

    bundle-tab.png
  6. バンドルを選択して元のバンドルに追加します。

  7. ドラッグアンドドロップを使用してバンドル内で移動します。

  8. 完了したら、をクリックします [変更を保存]

  1. 設定 YAML ファイルで、その中にネストしたいステップバンドルを定義します step_bundles プロパティ。

    step_bundles:
      initialize:
        steps:
          - activate-ssh-key: {}
          - git-clone: {}
  2. を使用してこのバンドルを別のバンドルの中にネストします bundles プロパティ。

    step_bundles:
      initialize:
        steps:
          - activate-ssh-key: {}
          - git-clone: {}
      deploy_bundle:
        steps:
          - bundle::initialize: {}
          - deploy-to-bitrise-io: {}

ステップバンドル入力

どのステップバンドルでも、入力のリストは以下で定義できます inputs キー。Step バンドルに設定できる入力は次のとおりです。バンドル定義以外で追加の入力を定義することはできません。

ただし、Step バンドルの定義済み入力の値を、バンドル定義の外に設定することはできます。 ステップバンドル入力の設定.

ステップバンドル入力はステップ入力と同じモデルを共有します。Step 入力とその形式について詳しくは、以下をご覧ください ステップ入力リファレンス.

  1. 設定 YAML ファイルに、以下を追加します。 inputs Step バンドルのプロパティ。

    format_version: 11
    step_bundles:
      install_deps:
        inputs: 
  2. アンダー inputs、Step 入力に使用するキーと値のペアを追加します。

    format_version: 11
    step_bundles:
      install_deps:
        inputs:     
        - cache_key: "npm-cache-{{ checksum "package-lock.json" }}"
        - npm_command: install
  3. 適切なステップ入力にキーを追加します。

    この例では、デフォルトの入力を次のように設定しました。 key の入力 restore-cache ステップと command の入力 npm ステップ。

    format_version: 11
    step_bundles:
      install_deps:
        inputs:     
        - cache_key: "npm-cache-{{ checksum "package-lock.json" }}"
        - npm_command: install
        steps:
        - restore-cache@1:
            inputs:
            - key: $cache_key
        - npm@1: {}
            inputs: 
            - command: $npm_command
    

ステップバンドル入力の設定

ステップバンドルの入力はステップバンドル定義で定義しますが、定義の外部に新しい入力を追加することはできません。

ワークフローのステップリストのステップバンドルで定義されたステップバンドル入力に新しい値を設定できます。

  1. 設定YAMLファイルで、ワークフローとステップバンドルを見つけます。 steps リスト。

  2. を追加 inputs Step バンドルが参照されるプロパティと、それにキーと値のペアを追加します。

    この例では、の新しい値を設定します cache_key バンドルで定義されているデフォルト値の代わりに入力してください。ワークフローが実行されると、 restore-cache ステップでは npm-cache の代わりに値 npm-cache-{{ checksum "package-lock.json" }}

    format_version: 11
    step_bundles:
      install_deps:
        inputs:     
        - cache_key: "npm-cache-{{ checksum "package-lock.json" }}"
        - npm_command: install
        steps:
        - restore-cache@1:
            inputs:
            - key: $cache_key
        - npm@1:
            inputs: 
            - command: $npm_command
    workflows:
      ci:
        steps:
        - git-clone@8: {}
        - bundle::install_deps:
            inputs:
            - cache_key: "npm-cache"
        - deploy-to-bitrise-io@2: {} 
    

ステップバンドル出力

ステップは出力変数を生成できます。ステップがステップ バンドルに含まれている場合、その出力変数は、ステップ バンドル以降のワークフロー内のすべてのステップで使用できます。

たとえば、ワークフローで使用されるステップバンドルが xcode-archive ステップ、バンドルの後の次のステップは、BITRISE_IPA_PATH ステップによって公開される出力変数。

run_if によるステップバンドルの条件付き実行

を使う run_if 条件付きステップバンドルでは、環境変数やその他の基準に基づいてバンドル全体を条件付きで実行できます。申請する場合 run_if ワークフロー内の Step Bundle 呼び出しに対して直接、バンドルの実行前に条件が評価されます。評価が false の場合、バンドル全体とそのすべてのステップがスキップされます

ザル run_if 構文は個々のステップの場合と同じように機能します。 run_if テンプレート式とカスタムテンプレート関数たとえば、 getenvenveq、および envcontain ステップがサポートされています。

例1 ドラフト PR のデプロイバンドルをスキップ

この例では、 deploy-to-staging バンドルは、PR がドラフト PR でない場合にのみ実行されます。同様に、 notify-slack bundle はビルドが成功した場合にのみ実行されます。

workflows:
  deploy:
    steps:
      - bundle::build-and-test: {}
      - bundle::deploy-to-staging:
          run_if: '{{ not (envcontain "BITRISE_GIT_MESSAGE" "[draft]") }}'
      - bundle::notify-slack:
          run_if: '{{ not .IsBuildFailed }}'

  1. プロジェクトのワークフローエディターを開きます。

  2. クリック ステップバンドル 左側にあります。

  3. 選択してください [構成] タブをクリックし、下に値を入力します。 その他の実行条件

    2025_08_15_step_bundle_conditional_execution_runif.png

指定できます run_if 定義の中でも Step バンドルのインスタンスでも:

  • いつ run_if が定義に含まれている場合は、すべてのインスタンスのデフォルトの run_if として機能します。

  • いつ run_if がインスタンス内にある場合、定義が上書きされ、その 1 つのインスタンスは run_if

    Step Bundle が通常条件付きで実行される場合は、定義したほうがよい run_if すべてのインスタンスが適切なデフォルト値になるように定義する run_if 。リポジトリのクローンやセットアップバンドルのように、通常はCI環境でしか意味がありません(そのため、git-cloneステップ自体には run_if: .IsCI)。

方法についてさらに詳しく ステップの有効化/無効化、条件の設定run_if エクスプレッション。

マイグレーション

現在同じものを持っている場合 run_if バンドル内の複数のステップの条件。以下を使用してワークフローを合理化する方法を示します run_if ステップバンドルで。

変更前:

workflows:
  test:
    steps:
      - bundle::my-test-suite: {}
step_bundles:
  my-test-suite:
    steps:
      - script:
          run_if: '{{ enveq "RUN_TESTS" "true" }}'
          # ...
      - gradle-runner:
          run_if: '{{ enveq "RUN_TESTS" "true" }}'
          # ...
      - deploy-to-bitrise-io:
          run_if: '{{ enveq "RUN_TESTS" "true" }}'
          # ...

後:

workflows:
  test:
    steps:
      - bundle::my-test-suite:
          run_if: '{{ enveq "RUN_TESTS" "true" }}'
step_bundles:
  my-test-suite:
    steps:
      - script:
          # ...
      - gradle-runner:
          # ...
      - deploy-to-bitrise-io:
          # ...