動的なパイプライン
Premium 専用機能
Dynamic pipelines is a Premium feature for Bitbucket Cloud. Learn more about Bitbucket Premium.
動的なパイプラインでは、アトラシアンの Forge 拡張性プラットフォームを活用し、「コード レベル」のアプリ ロジックを使用してワークフローの任意のコンポーネントにランタイム変更を加えることで、CI/CD ワークフローを無限の柔軟性とインテリジェンスで強化できます。
動的なパイプラインがなければ、CI/CD 構成は静的な .yml 構文で定義できるものに制限されます。変数や条件などによって柔軟性が制限される可能性がありますが、CI/CD ワークフローの圧倒的多数はいかなる類の柔軟性も提供できません。
従来の CI/CD ワークフロー
チームのリポジトリに保存されている静的 CI/CD 設定ファイルと、CI/CD ビルドを実行する Bitbucket Pipelines プラットフォームの間にある「ミドルウェア」のように動的なパイプラインは機能します。 そのミドルウェア層にカスタム ロジックを挿入することで、動的なパイプライン アプリに実装したロジックに基づいて、ソフトウェア チームではパイプライン ワークフローにランタイム変更を加えることができます。 動的なパイプラインでは、アプリが Bitbucket Cloud や他の外部システムから取得できる外部コンテキストに基づいて変更を加えることもできます。 たとえば、チームでデプロイ前にサポート管理ツールにリクエストを行う動的なパイプラインを実装し、「オンコール」サポート エージェントがいない場合にデプロイに 手動承認」ステップを動的に挿入する場合があります。
リポジトリ レベルの動的なパイプライン ワークフロー
動的なパイプラインはリポジトリ レベルだけに限定されず、ワークスペース レベルでも設定できます。つまり、そのワークスペース内のどのリポジトリでも利用と設定が可能ということです。 Bitbucket クラウド リソース階層を活用することで、組織構造のさまざまなレベルでさまざまなレベルのロジックを実装し、それらのさまざまなレベルのロジックをすべてシームレスに連携させて、真の「組織全体」にわたる CI/CD オーケストレーション エンジンを構築することができます。
ワークスペース レベルの動的なパイプライン ワークフロー
動的なパイプラインを使用する利点と例
動的なパイプラインは「単一のツール」というよりも「ツールキット」のようなものです。 非常に特殊なユースケースのごく一部ではなく、チームや組織が困難で複雑な課題の全カテゴリーを解決できるように設計されています。
動的なパイプラインを使用すると、アプリ レベルのロジックによるランタイムの変更を通じて、従来の静的な .yaml パイプライン構成に極めて高い柔軟性を加えることができます。チーム単位または組織全体で直面しているさまざまな問題を解決するためにこの能力を使用できます。
動的なパイプラインが使用されてきた例として次のようなものがあります。
環境、リポジトリ、またはワークスペース変数を利用して、CI/CD ワークフローで使用する Docker イメージ名を定義する。
組織内のすべてのビルド実行が事前承認リストの Docker イメージを使用して実行されるようにする。
Ensuring all builds within an organization are executed on self-hosted runners.
プル リクエストの変更セットに基づいて、大規模な単一リポジトリで選択的なテスト実行を実装する。
プラットフォーム エンジニアリング チームが定義、共有でき、組織内の複数のエンジニアリング チームで使用可能な標準化された再利用可能な CI/CD ワークフローの「ブロック」を作成する。
特定のコスト センター コードがタグ付けされたランナー エージェントにジョブを動的に割り当てることで、クラウド インフラストラクチャのコスト配分を自動化する。
実行時に一連のタグとラベルからパイプライン ワークフローを自動生成するために使用できる、全体的にカスタマイズされた
bitbucket-pipelines.yml構文を構築する。
動的なパイプラインの作成、使用、設定
動的なパイプライン アプリの作成
Dynamic pipeline logic is implemented as code inside an app running in Atlassian’s Forge extensibility platform. Getting up and running with a simple dynamic pipeline app can be achieved in less than thirty minutes. We have an extensive array of resources available to get you started including CLI-generated app templates, step-by-step tutorials, and ready-to-run example repositories that you can clone to your own machine. Head over to the developer documentation to get started.
動的なパイプラインの使用
動的なパイプラインを設定して使用する前に、希望通りの動作を実現できるよう、動的なパイプラインの仕組みを理解することが重要です。
さきほどのワークスペース レベルの動的なパイプライン ワークフローの画像と同じように、一方の端に bitbucket-pipelines.yml ファイル、もう一方の端に Bitbucket Pipelines プラットフォームがある一連のチューブとしてとらえることで動的なパイプラインを最も簡単に理解できます。
それぞれの「チューブ」は、一方の端でパイプライン ワークフロー設定を受け取り、その設定にいくつか変更を加え、もう一方の端に更新されたパイプライン設定を送ることができます。 この「パイプラインイン/パイプラインアウト」 設計により、複数の動的なパイプラインを連続して接続して一種の「チェーン」を作成できます。
動的なパイプラインはリポジトリ レベル、ワークスペース レベル、またはその両方で設定できます。常に「ボトムアップ 」 を実行し、階層の上位レベルで定義された変更が下位レベルで行われた変更よりも優先されるようにします。
動的なパイプラインの評価順序
bitbucket-pipelines.ymlファイル。リポジトリ レベルの動的なパイプライン。
ワークスペース レベルの動的なパイプライン。
リポジトリ レベルの動的なパイプラインの設定
The simplest implementation of a dynamic pipeline is done at the repository level. Once a dynamic pipeline app has been created following the instructions provided in our developer documentation and is installed into your Bitbucket Cloud workspace, it will be available to configure in your Repository settings. Note: You must be a repository admin to access dynamic pipelines.
[リポジトリの設定] を選択し、左側のサイドバー ナビゲーションで [パイプライン] の下にある [動的なパイプライン] を選択します。
「動的なパイプライン」ページで [Repository dynamic pipeline provider (リポジトリの動的なパイプラインのプロバイダー)] ドロップダウンを選択すると、ワークスペースにインストールされているすべての動的なパイプライン アプリのリストが表示されます。
注: この画面には読み取り専用の "Workspace dynamic pipeline provider (ワークスペースの動的なパイプラインのプロバイダー)" フィールドが表示されるので、ワークスペースにワークスペース レベルの動的なパイプラインも設定されているかどうかを確認できます。リポジトリ レベルとワークスペース レベルの動的なパイプラインを同時に使用できます。リポジトリに設定したい動的なパイプラインを選択し、[保存] を選択します。 その時点から、そのリポジトリのコンテキストで実行されるすべてのパイプライン実行では、選択した動的なパイプライン アプリを使用するようになります。
ワークスペース レベルの動的なパイプラインの設定
ワークスペース レベルの動的なパイプラインは、組織レベルの CI/CD オーケストレーションと管理のための非常に強力なツールです。これらを使用して企業全体で CI/CD を標準化したり、コンプライアンスとセキュリティ制御をワークスペースで実行されるすべてのビルドに適用したりできるだけでなく、組織に合わせて独自の bitbucket-pipelines.yml 構文を定義することさえ可能です。
ワークスペース レベルの動的なパイプラインに関する重要な情報:
ワークスペース レベルで設定された動的なパイプラインは、そのワークスペースでパイプライン が実行されるたびに実行されることを理解することが非常に重要です。これにより、ワークスペース レベルの動的なパイプラインは非常に強力なツールになりますが、誰もが知っているように「大きな力には大きな責任が伴う」ことになります。
リポジトリ レベルでの動的なパイプラインの実装が不十分だと、1 つのチームやプロジェクトでしか問題が発生しませんが、ワークスペース レベルで動的パイプラインの実装が不十分だと、組織全体のビルドを妨げる可能性があります。
さらに、同じ動的パイプライン アプリのバグが原因で、動的なパイプライン アプリ自体のビルド/デプロイが中断されるような循環的な依存関係を作らないようにすることが重要です。 そのため、ワークスペース レベルの動的なパイプライン アプリのコードを含むリポジトリには、従来の .yml ベースのパイプライン設定のみを利用することが推奨されています。
注: ワークスペース レベルの動的なパイプラインを設定できるのはワークスペース管理者だけです。
上部のナビゲーション バーの右上隅にある [設定] を選択します。
[設定] ドロップダウンから [ワークスペースの設定] を選択し 、左側のサイドバー ナビゲーションにある [パイプライン] で [動的なパイプライン] を選択します。
[動的なパイプライン] ページで [Workspace dynamic pipeline provider (ワークスペースの動的なパイプラインのプロバイダー)] ドロップダウンを選択すると、ワークスペースにインストールされているすべての動的なパイプライン アプリのリストが表示されます。
ワークスペースに設定したい動的なパイプラインを選択し、[保存] を選択します。 その時点から、そのワークスペース内で実行されるすべてのパイプライン実行では、選択した動的なパイプライン アプリを使用するようになります。
動的に生成されたパイプライン設定の操作
エンド ユーザーの観点からは、従来の方法で純粋に .yaml から設定を生成したパイプラインと、設定が動的に生成されたパイプラインの間にはほとんど違いがありません。
.yaml ベースのパイプラインでは、パイプラインの詳細ページに .yaml 設定を含むリポジトリ内のファイルへのリンクが用意されているのが主な違いです。 これは、パイプライン ワークフローをより深く理解したり、パイプラインの問題をデバッグしたりする必要がある場合に備えて用意されています。
動的に生成された設定の場合、読み取られる .yaml ファイルと実行されるパイプラインの間のどこかでその構成に変更が加えられるため、システムによって実行された内容を .yaml に保存されたパイプラインが直接表現していないことがよくあります。
動的に生成されたパイプラインをユーザーが正しく理解してデバッグできるように、動的なパイプライン生成プロセスの最終出力を表示して、システムによって実行された正確なパイプライン設定を確認できるメカニズムを用意しています。
設定が動的に生成されたパイプラインの場合、"このパイプラインは動的なパイプラインによって生成されます" という行がパイプラインの詳細ページに表示されます。その下には [設定を表示] というリンクが表示されます。
2. [View the configuration (設定を表示する)] リンクを選択すると、実行されたパイプラインの設定がダイアログに表示されます。
注: 動的に生成されたパイプライン設定はこのビューの .yaml 表現に戻されました (ただし、動的なパイプライン アプリから JSON が返されます)。 これは、開発者が使い慣れている設定の .yaml バージョンを読んで理解しやすくするために行われます。
3. 非常に長い設定 (数千行) の場合、UI では設定全体がレンダリングされません。 代わりに [ダウンロード] ボタンが表示されるため、設定をファイルとしてダウンロードしてローカルのテキスト エディターか IDE で検索できます。
動的なパイプラインに関するその他のリソース
この内容はお役に立ちましたか?