Code Stream 管理者または開発者は、Gerrit トリガを使用して Code Stream Cloud Services と Gerrit コード レビュー ライフサイクルを統合できます。Gerrit プロジェクトでパッチ セットの作成、ドラフトの発行、コード変更のマージを行ったり、変更を Git ブランチに直接プッシュすると、イベントがパイプラインの実行をトリガします。

Gerrit トリガを追加する場合は、Gerrit リスナーと、Gerrit サーバ上の Gerrit プロジェクトを選択し、Gerrit イベントを構成します。この例では、最初に Gerrit リスナーを構成し、次に 3 つの異なるパイプラインの 2 つのイベントを使用して、Gerrit トリガでこのリスナーを使用します。

前提条件

  • Code Stream で、プロジェクトのメンバーであることを確認します。メンバーでない場合は、プロジェクトにメンバーとして追加するように Code Stream 管理者に依頼します。VMware Code Streamでプロジェクトを追加する方法を参照してください。
  • Code Stream で Gerrit エンドポイントが設定されていることを確認します。Code Stream を Gerrit と統合する方法を参照してください。
  • パイプラインをトリガするために、パイプラインの入力プロパティが [Gerrit] として設定されていることを確認します。これにより、パイプラインは、実行中に Gerrit パラメータを入力として受け取ることができます。

    パイプラインに挿入できる Gerrit 入力パラメータが 入力 タブに表示されています。

    入力パラメータについては、CICD パイプラインを作成してワークスペースを設定する方法を参照してください。

手順

  1. Code Stream で、[トリガ] > [Gerrit] の順にクリックします。
  2. (オプション) [リスナー] タブをクリックし、[新規リスナー] をクリックします。
    注: Gerrit トリガに使用する予定の Gerrit リスナーがすでに定義されている場合は、この手順をスキップします。
    1. プロジェクトを選択します。
    2. Gerrit リスナーの名前を入力します。
    3. Gerrit エンドポイントを選択します。
    4. API トークンを入力します。
      CSP API トークンは、 Code Stream との外部 API 接続を認証します。API トークンを取得するには、次の手順を実行します。
      1. vRealize Automation Cloud にログインします。
      2. 自分の名前の横にあるドロップダウンの矢印をクリックします。
      3. [マイ アカウント] をクリックします。
      4. [API トークン] をクリックします。
      5. [トークンの生成] をクリックします。
        1. トークン名を入力します。
        2. [組織ロール] で、[組織の所有者] を選択します。
        3. [サービス ロール] で、[VMware Code Stream] をクリックして展開し、[Code Stream 管理者] を選択します。
        4. [生成] をクリックします。

          [生成したトークン] ウィンドウに指定した名前と組織名が付いたトークンが表示されます。

      6. [コピー] アイコンをクリックします。

        [コピー] をクリックすると、文字列が正確にキャプチャされ、ポインタを使用して文字列をコピーした場合よりも信頼性が高くなります。

      変数を作成した場合は、ドル記号によるバインドを使用して入力した変数名が API トークンに表示されます。トークンをコピーした場合、API トークンにはマスクされたトークンが表示されます。

      クラウド インスタンスの場合、Gerrit トリガ リスナーは、Gerrit エンドポイントと API トークンを使用します。このトークンは、VMware Cloud Services コンソール の マイ アカウント から生成します。

    5. トークンとエンドポイントの詳細を検証するには、[検証] をクリックします。
      トークンは、あと 90 日で有効期限が切れます。
    6. [作成] をクリックします。
    7. リスナー カードで [接続] をクリックします。
      リスナーが Gerrit サーバ上のすべてのアクティビティの監視を開始し、そのサーバ上で有効になっているすべてのトリガを待機します。そのサーバでのトリガの待機を停止するには、トリガを無効にします。
  3. [トリガ] タブをクリックしてから、[新規トリガ] をクリックします。
  4. Gerrit サーバ上のプロジェクトを選択します。
  5. 名前を入力します。
    Gerrit トリガ名は一意である必要があります。
  6. 設定された Gerrit リスナーを選択します。
    Code Stream は、Gerrit リスナーを使用して、サーバで使用可能な Gerrit プロジェクトのリストを表示します。
  7. Gerrit サーバ上のプロジェクトを選択します。
  8. Gerrit リスナーが監視するリポジトリのブランチを入力します。
  9. (オプション) ファイルの包含または除外をトリガの条件として指定します。
    • パイプラインをトリガするファイルの包含を指定します。コミット内のファイルのいずれかが包含パスまたは正規表現に指定されているファイルと一致すると、パイプラインがトリガされます。正規表現を指定した場合、 Code Stream は変更セット内のファイル名がその正規表現の式に一致するパイプラインのみをトリガします。正規表現フィルタは、1 つのリポジトリに複数のパイプラインのトリガを設定する場合に便利です。
    • ファイルの除外を指定して、パイプラインがトリガされないようにします。コミット内のすべてのファイルが除外パスまたは正規表現に指定されているファイルと一致すると、パイプラインはトリガされません。
    • [除外を優先する] をオンに切り替えると、パイプラインがトリガされなくなります。コミットのファイルのいずれかが除外パスまたは正規表現で指定されたファイルと一致する場合でも、パイプラインはトリガされません。[除外を優先する] のデフォルト設定は、オフとなっています。
    ファイルの包含とファイルの除外の両方が条件として満たされる場合、パイプラインはトリガされません。

    次の例では、ファイルの包含も除外もトリガの条件にしています。

    ファイルの包含とファイルの除外が、プレーンテキストのペアまたは正規表現のペアとしてその値とともに表示されます。

    • ファイルの包含の場合、runtime/src/main/a.java や他の Java ファイルに変更を加えてコミットすると、イベント設定で指定されたパイプラインがトリガされます。
    • ファイルの除外の場合、両方のファイルに変更を加えてコミットしても、イベント設定で指定されたパイプラインはトリガされません。
  10. [新しい構成] をクリックします。
    1. Gerrit イベントの場合、[パッチセットの作成][ドラフトの公開]、または [変更のマージ] を選択します。または、Git への直接プッシュによって Gerrit をバイパスする場合は、[直接 Git プッシュ] を選択します。
    2. トリガするパイプラインを選択します。
      カスタムで追加された入力パラメータがパイプラインに含まれている場合、[入力パラメータ] リストにはパラメータと値が表示されます。イベントをトリガするパイプラインに渡される入力パラメータの値を入力できます。値を空白のままにすることも、デフォルト値を使用することもできます。
      注: デフォルト値が定義されている場合:
      • 入力パラメータに値を入力すると、パイプライン モデルで定義されているデフォルト値がオーバーライドされます。
      • パイプライン モデルのパラメータ値が変更されても、トリガ設定のデフォルト値は変更されません。

      Gerrit トリガ用の自動挿入の入力パラメータについては、前提条件を参照してください。

    3. [パッチセットの作成][ドラフトの公開][変更のマージ] では、デフォルトで一部のアクションがラベルとともに表示されます。ラベルの変更や、コメントの追加ができます。その後、パイプラインが実行されると、パイプラインの [実行された操作] として、ラベルまたはコメントが [アクティビティ] タブに表示されます。
      Gerrit イベント構成では、成功コメントまたは失敗コメントの変数を使用してコメントを入力できます。たとえば、 ${var.success}${var.failure} を使用します。
    4. [保存] をクリックします。
    複数のパイプラインに複数のトリガ イベントを追加するには、 [新しい構成] を再度クリックします。
    次の例では、3 つのパイプラインのイベントを表示できます。
    • Gerrit プロジェクトで [変更のマージ] イベントが発生した場合、[Gerrit-Pipeline] という名前のパイプラインがトリガされます。
    • Gerrit プロジェクトで [パッチセットの作成] イベントが発生した場合、[Gerrit-Trigger-Pipeline] および [Gerrit-Demo-Pipeline] という名前のパイプラインがトリガされます。

    Gerrit リスナーおよびトリガの設定には、イベント タイプと、トリガ可能なパイプラインが含まれます。

  11. [作成] をクリックします。
    Gerrit トリガは、 [トリガ] タブに新規カードとして表示され、デフォルトでは [無効] に設定されています。
  12. トリガ カードで、[有効] をクリックします。
    トリガを有効にすると、Gerrit リスナーを使用できるようになり、Gerrit プロジェクトのブランチで発生するイベントの監視が開始されます。
    ファイルの包含条件またはファイルの除外条件は同じであるが、トリガの作成時に含めたものとは異なるリポジトリを持つトリガを作成するには、トリガ カードで [アクション] > [クローン作成] の順にクリックします。次に、クローン作成されたトリガで [開く] をクリックし、パラメータを変更します。

結果

完了です。3 つの異なるパイプラインの 2 つのイベントに Gerrit トリガが正常に設定されました。

次のタスク

Gerrit プロジェクトのコード変更をコミットした後、[アクティビティ] タブで Code Stream の Gerrit イベントを確認します。アクティビティのリストに、トリガ設定のすべてのパイプライン実行に対応するエントリが含まれていることを確認します。

イベントが発生した場合、特定のタイプのイベントに関連する Gerrit トリガ内のパイプラインのみが実行されます。この例では、パッチ セットが作成された場合、[Gerrit-Trigger-Pipeline][Gerrit-Demo-Pipeline] のみが実行されます。

[アクティビティ] タブの列には、各 Gerrit トリガ イベントについての情報が示されています。表の下に表示される列のアイコンをクリックすると、表示される列を選択できます。
  • トリガが直接の Git プッシュであった場合、[サブジェクトの変更] 列と [実行] 列は空になります。
  • [Gerrit トリガー] 列には、イベントを作成したトリガが表示されます。
  • [リスナー] 列はデフォルトでオフになっています。選択すると、イベントを受信した Gerrit リスナーが列に表示されます。複数のトリガに関連付けられている 1 つのリスナーを表示できます。
  • [トリガー タイプ] 列はデフォルトでオフになっています。選択すると、トリガのタイプが [自動] または [手動] として列に表示されます。
  • 他の列には、[コミット時間][変更 #][ステータス][メッセージ][実行された操作][ユーザー][Gerrit プロジェクト][ブランチ][イベント] が含まれます。

Gerrit トリガの アクティビティ タブに、選択したすべての列と、各列のすべてのアクティビティ エントリに関連する情報が表示されます。

完了した実行や失敗したパイプライン実行のアクティビティを制御するには、[アクティビティ] 画面の任意のエントリの左側にある 3 つのドットをクリックします。

  • パイプライン モデルの誤りや別の問題が原因でパイプラインを実行できない場合は、誤りを修正し、[再実行] を選択して、パイプラインを再実行します。
  • ネットワーク接続の問題や別の問題が原因でパイプラインを実行できない場合は、[再開] を選択して、同じパイプラインの実行を再開し、ランタイムを保存します。
  • [実行の表示] を使用して、パイプライン実行ビューを開きます。パイプラインを実行して結果を確認する方法を参照してください。
  • [削除] を使用して、[アクティビティ] 画面からエントリを削除します。

Gerrit イベントがパイプラインのトリガに失敗した場合は、[手動でトリガー] をクリックして、Gerrit トリガを選択します。次に、変更 ID を入力して、[実行] をクリックします。

Gerrit サーバとパイプライン クラウド プロキシ間の接続が失われたことが原因で、Gerrit イベントが欠落する場合があります。未接続の状態は最大で 10 分間続くことがあります。Gerrit サーバをアップグレードまたは再起動する場合や、パイプライン クラウド プロキシをアップグレードする場合に接続が失われることがあります。