並列ステップのセットアップまたは実行

並行ステップを使用すると、自己完結型の一連のステップを同時に実行して、ビルドやテストを迅速に行えます。

はじめる前に

  • Free プランでは、アカウントごとの並列ステップは最大 10 個です。

  • Standard プランまたは Premium プランのパイプライン内に持つことができる並行ステップの総数は 100 です。

  • 並列ステップ セット内のすべての環境は同じタイプである必要があります。このため、同じセットに本番環境とテスト環境タイプを混在させないでください。

  • ステップを並行した場合も、パイプラインが使用する合計のビルド時間数は変わりません。結果を早く確認できるようになりますが、使用した合計ビルド時間は、各ステップでかかった合計時間に基づいて計算されます。

手順

この機能はさまざまな方法で使用できますが、次のガイドラインに従うことをおすすめします。

  1. ソフトウェアをビルドするための最初のステップを設定します。

  2. ソフトウェアをテストするための一連の並行ステップを追加します。
    複数の並行テスト ステップにつながる 1 つのビルド ステップを実行している場合、最初のステップで、外部ビルドの依存関係を可能な限り多くキャッシュすると、それぞれのテスト ステップ実行時の時間を節約できます。その後、すべてのテストを同時に実行します。テストはキャッシュを使用できます。

  3. 複数の類似環境に同時にデプロイします。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 pipelines: default: - step: # non-parallel step script: - ./build.sh - parallel: # these 2 steps will run in parallel steps: - step: script: - ./integration-tests.sh --batch 1 - step: script: - ./integration-tests.sh --batch 2 - step: # non-parallel step script: - ./deploy.sh

フェイル ファスト

より早くフィードバックを得て、ビルド時間を節約するために、いずれかのステップが失敗した場合、即座に停止するように並行ステップを設定できます。並行プロパティで fail-fast: true を設定すると、次のような単一ステップが失敗した場合、グループ内で実行中のすべてのステップが強制的に停止されます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 pipelines: default: - step: script: - ./build.sh - parallel: fail-fast: true steps: - step: script: - ./integration-tests.sh --batch 1 - step: script: - ./integration-tests.sh --batch 2

fail-fast は、単一ステップに適用することもできます。

  • ステップに fail-fast: false が含まれる場合、並行グループ全体が停止することなく、ステップが失敗することがあります。

  • ステップに fail-fast: true が含まれる場合、ステップが失敗すると、並行グループ全体が停止します。

例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 pipelines: default: - step: script: - ./build.sh - parallel: steps: - step: fail-fast: true script: - ./run-fast-tests.sh - step: script: - ./run-slow-tests.sh

デフォルトの変数

スクリプトで高度なロジックを実行したい場合、並行ステップでは、以下の変数が利用可能です。

  • BITBUCKET_PARALLEL_STEP - グループ内の現在のステップのゼロベース インデックス。例: 0, 1, 2, …

  • BITBUCKET_PARALLEL_STEP_COUNT - グループ内のステップの合計数。例: 5。

並行ステップによるアーチファクトの生成

並行ステップでは、アーティファクトを生成および消費できます。次の点に注意します。

  • 並行ステップでは、以前のステップで生成されたアーティファクトのみを使用できます。同じ並行セットのステップで生成されたものは使用できません。

  • 並行セットのあとのステップは、生成されたすべてのファイルの組み合わせを取得します。

  • ファイルを含むアーティファクトが並行ステップによって同じ場所に生成された場合、競合はファイル単位で解消され、YAML ファイルの最後のステップで生成されたファイルが優先されます。

その他のヘルプ