Git のエクスポート/復元

Dialogflow CX は、複数の Git プロバイダ(GitHub、GitLab、Bitbucket など)と統合されています。 この統合により、Git プロバイダに push するために JSON を使用してエージェントを エクスポート することや、エージェントを復元するために Git プロバイダから pullすることが容易になりました。 Git プロバイダに push される JSON エクスポート形式は、エクスポートされたエージェントの展開された zip ファイルの内容です。

この機能を使用すると、次のような Git プロバイダのソース管理機能を利用できます。

  • コードレビュー ツールを使用したエージェントの変更レビュー
  • 差分ツールを使用したエージェントの差分の確認
  • 結合

制限事項

次の制限が適用されます。

  • [古い統合バージョンのみ] GitHub API には、1 回の commit で更新できるファイルの数に制限があります。 ファイル数が 500 を超えると、Dialogflow CX から GitHub に push できなくなる場合があります。 その場合は、エージェントを zip としてエクスポートし、マシンの Git CLI を使用してエージェント ファイルを GitHub に push できます。 この制限については、今後の Dialogflow CX リリースで対処する予定です。
  • GitHub のプライベート アクセス セルフホスト リポジトリは、Dialogflow CX がこれらのリポジトリにアクセスできないため対象外です。
  • Git リポジトリには、エージェントのエクスポートによってエクスポートされたエージェント ファイル以外のファイルを含めることはできません。リポジトリ内の他のすべてのファイルは、push のたびに削除されます。

構成

この機能を構成するには、Git プロバイダからアクセス トークンを取得し、Secret Manager に保存して、シークレット リソースを Dialogflow CX に提供する必要があります。

アクセス トークン

Git プロバイダからアクセス トークンを取得するには:

GitHub

GitHub 個人トークンを取得する必要があります。詳細な個人用アクセス トークンを使用する場合は、次の権限のアクセス権が必要です。

  • リポジトリ権限 > コンテンツ: 読み取りと書き込み
  • リポジトリ権限 > メタデータ: 読み取り専用(コンテンツ権限の選択後に自動選択される)

GitLab

GitLab 個人アクセス トークンを取得する必要があります。

Bitbucket

Bitbucket アクセス トークンを取得する必要があります。

Secret Manager

アクセス トークンを取得したので、トークンのシークレットを作成する必要があります。

  1. Secret Manager API を有効にします
  2. シークレットを作成します

Dialogflow CX の構成

Dialogflow CX でこの統合を構成するには:

  1. Dialogflow サービス エージェントに、Secret Manager のアクセス トークン シークレットにアクセスする権限を付与します。 エージェント プロジェクトの gcp-sa-dialogflow.iam.gserviceaccount.com サービス アカウントに Secret Manager Secret Accessor ロールを付与します。 Secret Manager シークレットへのアクセス権を付与するをご覧ください。
  2. Git 統合の構成を開きます。
    • 会話エージェント コンソール
      1. 右上の設定アイコンをクリックして、設定画面を開きます。
      2. 下にスクロールして [Add Git integration] をクリックします。
    • Dialogflow CX コンソール
      1. [管理] タブをクリックします。
      2. [Testing &Deployment] セクションで [Git] をクリックします。
      3. [新規作成] をクリックします。
  3. 構成の詳細を入力します。
    1. 次のように入力します。
      • GitHub 接続の表示名。
      • Git リポジトリの URL(例: https://github.com/<path-to-repo>.git)。
      • エージェントがやり取りする Git ブランチを追加します。 ブランチ名の横にあるスターアイコンをクリックすると、ブランチをデフォルト ブランチとして指定できます。
      • アクセス トークン シークレット。特定のバージョンの場合は projects/*/secrets/*/versions/* 形式、最新バージョンの場合は projects/*/secrets/*/versions/latest 形式で作成したシークレット バージョンです。
    2. [接続] をクリックします。
    3. Git サービスが準備できるまで 1 分ほどかかることがあります。 コンソールに通知が表示されます。

push と復元

構成が完了すると、Git との間でエージェントを push または pull できます。

[push] ボタンは、エージェントをエクスポートして、[Git ブランチ] プルダウンで選択した Git ブランチに commit するために使用されます。 この commit は、特定の違いではなく、エージェント全体で構成され、リポジトリ内の既存のファイルはすべて削除されます。

Dialogflow 閲覧者 ロールを持つユーザーは、Git リポジトリに push できます。不要な push を防ぐには、これらのエージェントに読み取り専用の個人アクセス トークンを構成します。

[復元] ボタンは、[Git ブランチ] プルダウンで選択した Git ブランチからエージェント データを pull し、このデータから Dialogflow CX エージェントを復元するために使用します。これによって、エージェントの復元と同じ方法でエージェントが上書きされます。

使用例

次の例は、複数のユーザーがこの機能を使用して、本番環境のエージェントにさまざまなエージェントの変更を提案する方法を示しています。

エージェントが次の Git ブランチを使用していることを考慮します。

  • Prod: 本番環境エージェントのブランチ
  • Dev1: エージェント開発用のブランチ
  • Dev2: エージェント開発用の別のブランチ

ユーザー 1 はエージェントの変更を提案し、次の手順を実行します。

  1. 本番環境エージェントを新しいエージェントにエクスポートします。
  2. このエージェントのコピーに必要な変更を加えます。
  3. 変更をテストします。
  4. 変更したエージェントを Dev1 ブランチに push します。
  5. Prod ブランチへのマージ リクエストを作成します。

ユーザー 2 はエージェントの変更を提案し、次の手順を実行します。

  1. 本番環境エージェントを新しいエージェントにエクスポートします。
  2. このエージェントのコピーに必要な変更を加えます。
  3. 変更をテストします。
  4. 変更したエージェントを Dev2 ブランチに push します。
  5. Prod ブランチへのマージ リクエストを作成します。

ユーザー 3 は両方のユーザーからのマージ リクエストを確認し、次の手順を実行します。

  1. 競合を解決します。
  2. 承認された変更を commit します。
  3. 本番環境の Git ブランチを本番環境の Dialogflow CX エージェントに復元します。