Code Stream 管理者または開発者は、Git トリガを使用して Code Stream と Git ライフサイクルを統合できます。GitHub、GitLab、または Bitbucket Enterprise でコードを変更すると、対応するイベントが Webhook を使用して Code Stream と通信し、パイプラインをトリガします。Webhook は、同じネットワークから Cloud Assembly とエンタープライズ バージョンの両方にアクセスできる場合に、GitLab、GitHub、Bitbucket のオンプレミス エンタープライズ バージョンと連携します。

Code Stream で Git 用の Webhook を追加すると、GitHub、GitLab、または Bitbucket リポジトリにも Webhook が作成されます。後で Webhook を更新または削除すると、そのアクションによって GitHub、GitLab、または Bitbucket の Webhook も更新または削除されます。

Webhook 定義には、監視対象のリポジトリのブランチ上にある Git エンドポイントを含める必要があります。Webhook を作成するために、 Code Stream は Git エンドポイントを使用します。エンドポイントがない場合には、Webhook を追加するときに作成できます。この例では、GitHub に Git エンドポイントが事前定義されていることを前提としています。

注: Webhook を作成するには、Git エンドポイントは認証にプライベート トークンを使用する必要があります。パスワードは使用できません。

Webhook の構成画面で同じ Git エンドポイントを使用して、ブランチ名に別の値を指定することにより、複数のブランチに対して複数の Webhook を作成できます。同じ Git リポジトリ内の別のブランチに別の Webhook を作成する際に、複数のブランチに対して Git エンドポイントのクローン作成を複数回行う必要はありません。代わりに、Webhook 内でブランチ名を指定すれば、Git エンドポイントを再利用できるようになります。Git Webhook のブランチがエンドポイントのブランチと同じである場合は、Git Webhook 画面でブランチ名を入力する必要はありません。

この例では、Git トリガを GitHub リポジトリと併用する方法を示しますが、その前提条件には、別の Git サーバ タイプが使用されている場合に必要な準備が含まれています。

前提条件

  • Code Stream で、プロジェクトのメンバーであることを確認します。メンバーでない場合は、プロジェクトにメンバーとして追加するように Code Stream 管理者に依頼します。Code Streamでプロジェクトを追加する方法を参照してください。
  • 監視対象の GitHub ブランチに Git エンドポイントがあることを確認します。Code Stream と Git の連携方法を参照してください。
  • Git リポジトリに Webhook を作成する権限があることを確認します。
  • GitLab で webhook を設定する場合、GitLab Enterprise のデフォルトのネットワーク設定を変更して、送信要求を有効にし、ローカルの Webhook を作成できるようにします。
    注: この変更は、GitLab Enterprise でのみ必要です。これらの設定は、GitHub または Bitbucket には適用されません。
    1. GitLab Enterprise インスタンスに管理者としてログインします。
    2. http://{gitlab-server}/admin/application_settings/network などの URL を使用して、ネットワーク設定に移動します。
    3. [送信要求] を展開し、次をクリックします。
      • Webhook および Web サービスからローカル ネットワークへの要求を許可する。
      • システム フックからローカル ネットワークへの要求を許可する。
  • トリガするパイプラインについて、パイプラインの実行時に Git パラメータを挿入するための入力プロパティが設定されていることを確認します。

    Git のトリガを使用するようにパイプラインを設定する場合は、入力 タブで入力パラメータを設定します。

    入力パラメータについては、タスクの手動追加を行う前の Code Stream での CICD ネイティブ ビルドの計画を参照してください。

手順

  1. Code Stream で、[トリガ] > [Git] の順にクリックします。
  2. [Git の Webhook] タブをクリックし、[新規の Git 用 Webhook] をクリックします。
    1. プロジェクトを選択します。
    2. Webhook のわかりやすい名前と説明を入力します。
    3. 監視対象のブランチ用に構成された Git エンドポイントを選択します。
      Webhook を作成すると、Webhook の定義には現在のエンドポイントの詳細が含まれます。
      • エンドポイントで Git タイプ、Git サーバ タイプ、または Git リポジトリの URL を後で変更すると、Webhook は元のエンドポイントの詳細を使用して Git リポジトリにアクセスするため、パイプラインをトリガーできなくなります。Webhook を削除して、エンドポイントを使用して再度作成する必要があります。
      • エンドポイントで認証タイプ、ユーザー名、またはプライベート トークンを後で変更すると、Webhook は引き続き機能します。
      • BitBucket リポジトリを使用している場合、リポジトリの URL は https://api.bitbucket.org/{user}/{repo name} または http(s)://{bitbucket-enterprise-server}/rest/api/1.0/users/{username}/repos/{repo name} の形式にする必要があります。
      注: ベーシック認証にパスワードを使用する Git エンドポイントを使用して Webhook を作成した場合は、その Webhook を削除し、認証にプライベート トークンを使用する Git エンドポイントを使用して再定義する必要があります。
      Code Stream と Git の連携方法を参照してください。
    4. (オプション) Webhook で監視するブランチを入力します。
      ブランチが未指定のままにされた場合、Webhook は Git エンドポイント用に構成されたブランチを監視します。
    5. (オプション) Webhook のシークレット トークンを生成します。
      シークレット トークンを使用する場合は、 Code Stream によって Webhook のランダムな文字列トークンが生成されます。Webhook は、Git イベント データを受信すると、シークレット トークンとともにデータを送信します。 Code Stream は、この情報を使用して、設定済みの GitHub インスタンス、リポジトリ、ブランチなど想定されるソースが呼び出し元であるかどうかを判断します。シークレット トークンによって、新たなセキュリティ レイヤーが加わります。Git イベント データが適切なソースから取得されていることを確認するためのものです。
    6. (オプション) ファイルの包含または除外をトリガの条件として指定します。
      • ファイルの包含。コミット内のファイルのいずれかが包含パスまたは正規表現に指定されているファイルと一致すると、コミットでパイプラインがトリガされます。正規表現を指定した場合、 Code Stream は変更セット内のファイル名がその正規表現の式に一致するときにのみパイプラインをトリガします。正規表現フィルタは、1 つのリポジトリに複数のパイプラインのトリガを設定する場合に便利です。
      • ファイルの除外。コミット内のすべてのファイルが除外パスまたは正規表現に指定されているファイルと一致すると、パイプラインはトリガされません。
      • 除外を優先する。[除外を優先する] を有効にすると、コミット内のファイルのいずれかが除外パスまたは正規表現に指定されているファイルと一致しても、パイプラインがトリガされなくなります。デフォルトの設定はオフです。
      ファイルの包含とファイルの除外の両方が条件として満たされる場合、パイプラインはトリガされません。

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

      ファイルの包含とファイルの除外、およびその値は Git のトリガの Git 用 Webhook タブに表示され、プレーンテキストまたは正規表現を使用できます。

      • ファイル包含の場合、runtime/src/main/a.java や他の Java ファイルに変更を加えてコミットすると、イベント設定に設定されたパイプラインがトリガされます。
      • ファイル除外の場合、両方のファイルに変更を加えただけでコミットしても、イベント設定に設定されたパイプラインはトリガされません。
    7. Git イベントの場合、[プッシュ] または [プル] 申請を選択します。
    8. API トークンを入力します。
      VMware Cloud Services API トークンは、 Code Stream との外部 API 接続の際にユーザーを認証します。API トークンを取得するには、次の手順を実行します。
      1. [トークンの生成] をクリックします。
      2. ユーザー名とパスワードに関連付けられているメール アドレスを入力し、[生成] をクリックします。
        生成するトークンは 6 か月有効です。これは更新トークンとも呼ばれます。
        • 後で使用するためにトークンを変数として保持するには、[変数の作成] をクリックし、変数の名前を入力して [保存] をクリックします。
        • 後で使用するためにトークンをテキスト値で保持するには、[コピー] をクリックし、トークンをテキスト ファイルに貼り付けてローカルに保存します。
        後で使用するために、変数の作成とテキスト ファイルによるトークンの保存の両方を選択することもできます。
      3. [閉じる] をクリックします。
    9. Webhook によってトリガされるパイプラインを選択します。
      カスタムで追加された入力パラメータがパイプラインに含まれている場合、[入力パラメータ] リストにはパラメータと値が表示されます。イベントをトリガするパイプラインに渡される入力パラメータの値を入力できます。値は、空白のままにすることもできます。デフォルト値が定義されている場合は、デフォルト値を使用することもできます。

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

    10. [作成] をクリックします。
      Webhook が新しいカードとして表示されます。
  3. Webhook カードをクリックします。
    Webhook データ フォームを再び表示すると、フォームの上部に Webhook の URL が追加されています。Git Webhook は、Webhook URL を経由して GitHub リポジトリに接続します。

    Git リポジトリでコピーして使用する Git Webhook URL が、Git のトリガの Git 用 Webhook タブに表示されます。

  4. 新しいブラウザ ウィンドウで、Webhook を使用して接続されている GitHub リポジトリを開きます。
    1. Code Stream で追加した Webhook を表示するには、[設定] タブをクリックし、[Webhooks] を選択します。
      Webhook リストの下部に、同じ Webhook URL が表示されます。

      GitHub リポジトリでは、Webhook のリストの一番下に同じ Git Webhook URL が表示されます。

    2. コードを変更するには、[コード] タブをクリックし、ブランチでファイルを選択します。ファイルを編集した後、変更をコミットします。
    3. Webhook URL が機能していることを確認するには、[設定] タブをクリックし、[Webhooks] を再度選択します。
      Webhook リストの下部に表示される Webhook URL の横に、緑色のチェックマークが示されます。 GitHub の Webhook が有効な場合は、緑色のチェックマークが表示されます。
  5. Code Stream に戻ると、Git Webhook のアクティビティが表示されます。[トリガ] > [Git] > [アクティビティ] の順にクリックします。
    実行ステータスで、パイプラインの実行が開始されたことを確認します。

    ユーザーがファイルをコミットすると、Git のトリガがアクティブ化され、アクティビティ タブにトリガのステータスが [開始済み] と表示されます。

  6. [実行] をクリックし、パイプラインを実行中に追跡します。
    パイプラインの実行を確認するには、[更新] を押します。

    パイプラインがトリガされると、パイプライン実行のステータスが [実行中] と表示されます。

結果

完了です。Git のトリガが正常に使用されました。