Code Stream 管理者は、パイプラインを共有することができます。これによって組織内のユーザーは、そのパイプラインを他のプロジェクトで実行したり、別のプロジェクトのパイプライン内にネストされたタスクとして追加したりできます。

共有パイプラインが役に立つ理由

パイプラインを共有すると、組織内のさまざまなプロジェクトで同じパイプラインを作成する必要がなくなります。また、共有パイプラインを更新すると、同じ更新がすべてのパイプライン ユーザーに対して反映されます。

共有パイプラインは、Service Broker でも使用できます。Service Broker 管理者は、共有パイプラインをカタログ アイテムとして追加できます。ユーザーは、それを申請して複数のプロジェクトで実行することができます。

Code Stream 管理者のみが、パイプラインの共有または共有の停止を実行できます。

パイプラインを共有する方法

パイプラインを共有するには、[パイプライン] をクリックし、共有するパイプラインを選択します。

  1. [アクション] > [プロジェクト間で共有] の順にクリックします
  2. パイプラインが無効になっている場合は、[アクション] > [有効化] の順にクリックします。
  3. (オプション) 共有パイプラインを Service Broker で使用できるようにするには、[アクション] > [リリース] の順にクリックします。

    パイプラインをリリースすると、Service Broker 管理者はそのパイプラインを Service Broker に追加できます。Service Broker カタログへの Code Stream パイプラインの追加を参照してください。

共有パイプラインの実行方法

共有パイプラインを実行するには、パイプラインを選択してプロジェクトを選択します。

パイプラインは選択したプロジェクトのコンテキストで実行され、パイプライン モデルのみが共有されます。エンドポイントや変数など、パイプラインで使用されているインフラストラクチャは共有されません。エンドポイントや変数を使用する共有パイプラインを別のプロジェクトで実行するときは、それらのエンドポイントと変数がそのプロジェクトで使用可能である必要があります。

たとえば、jenkinsPipelineprojectA を使用しており、jenkinsEndpoint という名前のエンドポイントを持つタスクを含んでいる場合です。

共有パイプラインを実行する前に、別のプロジェクトでパイプラインを実行するために必要なコンテンツがパイプラインに含まれているかどうかを確認します。

jenkinsPipeline を共有して projectB のコンテキストで実行する場合は、projectBjenkinsEndpoint が必要です。jenkinsEndpoint がない場合は、共有パイプラインを実行する前に、projectB にエンドポイントを作成します。

次の手順では、別のプロジェクトにエンドポイントを複製する方法を示します。変数に対しても同様の手順を実行します。

  1. [エンドポイント] をクリックします。複製するエンドポイント(ここでは jenkinsEndpoint)で、[アクション] > [エクスポート] の順にクリックします。
  2. [インポート] ボタンをクリックし、jenkinsEndpoint の YAML ファイルを選択します。
  3. ファイルを編集して、プロジェクト(ここでは次のサンプル YAML コードの projectB)を変更します。
    ---
    project: projectB
    kind: ENDPOINT
    name: jenkinsEndpoint
    ...
  4. [インポート] をクリックします。

projectBjenkinsPipeline を実行するには、パイプライン カードで [実行] をクリックし、プロジェクトとして projectB を選択します。

注: projectB で共有パイプラインを実行するには、 Code Stream の管理者、開発者、または実行者ロールが必要です。 Code Stream の閲覧者またはユーザーは、 Code Stream 管理者によって projectB のプロジェクト管理者またはプロジェクト メンバーにされない限り、パイプラインを実行できません。 Code Stream でのロールの詳細については、 Code Stream でユーザー アクセスと承認を管理する方法を参照してください。

共有パイプラインを別のパイプラインに追加する方法

別のパイプライン内のネストされたタスクとして共有パイプラインを使用すると、1 つのプロジェクトに含まれたパイプラインを超えてパイプラインの機能を拡張できます。共有パイプラインは、互いに異なるプロジェクトに配置することも、ネストされたタスクとして含まれているパイプラインとは異なるプロジェクトに配置することもできます。

次の例は、2 つのネストされたパイプライン タスクを含む master-shared-pipeline-demo という名前のパイプラインを示しています。

ネストされた共有パイプラインを含むパイプラインを作成する場合は、共有パイプラインを選択します。同じ名前のパイプラインが 2 つある場合は、プロジェクト名を使用して目的のパイプラインを選択します。

Task0 のパイプラインを指定するには、共有パイプラインのリストから選択します。すべてのパイプライン名にプロジェクト名が含まれます。複数の共有パイプラインの名前が同じである場合は、プロジェクト名を使用して目的のパイプラインを選択できます。

注: ネストされたパイプラインを含むパイプラインを実行する場合、そのパイプラインは、ネストされたパイプラインで使用されているすべてのエンドポイントまたは変数にアクセスできる必要があります。アクセスできない場合は、パイプラインのプロジェクトにコンテンツを作成する必要があります。

ロールバックに共有パイプラインを使用する方法

ロールバックに共有パイプラインを使用するには、タスクのロールバックを構成するときにパイプラインのリストで共有パイプラインを選択します。 Code Stream によってリストがフィルタされ、同じプロジェクトのパイプラインのみが表示されるか、複数のプロジェクトにある共有パイプラインが表示されます。

ロールバック用の共有パイプラインを追加する場合は、共有パイプラインを選択します。同じ名前のパイプラインが 2 つある場合は、プロジェクト名を使用して目的のパイプラインを選択します。

パイプラインで共有 VMware クラウド テンプレートを使用する方法

共有 VMware クラウド テンプレートは、パイプライン内のタスクのクラウド テンプレート ソースとして使用できます。共有クラウド テンプレートを使用すると、1 つのプロジェクトに含まれているクラウド テンプレートよりも多くのクラウド テンプレートにアクセスできます。

Code Stream でタスクを定義する前に、クラウド テンプレートが Cloud Assembly で共有されていることと、その名前およびバージョンを把握していることを確認します。クラウド テンプレートが共有されている場合は、プロジェクト名の横にあるアイコンがクラウド テンプレートのリストに表示されます。

パイプラインのソースとして共有クラウド テンプレートを追加する前に、VMware クラウド テンプレートが Cloud Assembly で共有されていることを確認します。

共有パイプラインで VMware クラウド テンプレートを使用するには、次の手順を実行します。
  • [タスク タイプ] で [VMware クラウド テンプレート] を選択します。
  • [アクション] で [展開の作成] または [展開の更新] を選択します。
  • 展開を更新する場合は、展開名を選択します。
  • [クラウド テンプレート ソース] で、[VMware クラウド テンプレート] を選択します。
  • [クラウド テンプレート名] で、クラウド テンプレートのリストから選択するか、名前を入力します。クラウド テンプレートがリストに表示されない場合は、クラウド テンプレートがパイプラインとは異なるプロジェクト内にあり、 Code Stream には同じプロジェクト内にあるクラウド テンプレートのみが表示されています。
  • [クラウド テンプレートのバージョン] に、クラウド テンプレートのバージョンを入力します。

次の例で、shared-bpCloud Assembly で確認した共有 VMware クラウド テンプレートであり、これを使用しますが、選択項目としてリストされていないため、名前を入力します。

共有クラウド テンプレートでタスクを定義する場合は、そのクラウド テンプレートが Cloud Assembly で共有されていることを確認してから、Code Stream に名前とバージョンを入力します。
注: 指定した VMware クラウド テンプレートが共有されていない場合に、別のプロジェクトのパイプラインでこのテンプレートを使用すると、選択したクラウド テンプレートが共有されていないことを示すメッセージが表示され、パイプラインの実行は失敗します。

パイプラインを削除または共有を停止する方法

共有パイプラインをネストされたタスクとして追加する場合、またはタスクをロールバックする場合、このパイプラインは使用されているパイプラインによって参照されます。パイプラインを削除または共有を停止するには、参照しているすべてのパイプラインから参照を削除する必要があります。

たとえば、master-shared-pipeline-demo に、ネストされたタスクとして Shared-Pipeline が含まれている場合、Shared-Pipeline は参照されています。Shared-Pipeline は、master-shared-pipeline-demo から解除するまで削除したり、共有を停止したりすることはできません。

TestRollbackShared-Pipeline を使用してタスクをロールバックする場合は、Shared-Pipeline が参照されます。Shared-Pipeline は、TestRollback でタスクに関するロールバックから解除するまで、削除したり、共有を停止したりすることはできません。

次の手順では、パイプラインを削除または共有を停止できるように、パイプラインの参照を確認し、参照しているパイプラインから参照を削除する方法を示します。

  1. 参照を確認し、見つかった場合はパイプラインの参照を更新します。
    1. [パイプライン] をクリックします。確認する対象の共有パイプラインで、[アクション] > [リファレンスの表示] の順にクリックします。
    2. [参照されているパイプライン] の名前を書き留めます。共有パイプラインを削除する前に、共有パイプラインがネストされたパイプラインとして使用されているか、または他のパイプラインによるロールバックのために使用されているかを確認します。
    3. 共有パイプラインを参照するパイプラインを開きます。ネストされたタスクとして使用されている共有パイプライン、またはタスクのロールバックに使用されている共有パイプラインを削除し、パイプラインを保存します。
  2. パイプラインを削除または共有を停止します。
    • 削除するパイプラインで、[アクション] > [削除] の順にクリックします。
    • 共有を停止するパイプラインで、[アクション] > [共有の停止] の順にクリックします。