GitHub

GitHub コネクタを使用すると、GitHub データに対して挿入、削除、更新、読み取りのオペレーションを実行できます。

始める前に

GitHub コネクタを使用する前に、次の作業を行います。

  • Google Cloud プロジェクトで次の操作を行います。
    • ネットワーク接続が設定されていることを確認します。ネットワーク パターンの詳細については、Network Connectivity をご覧ください。
    • コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
    • コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。

    • 次のサービスを有効にする
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

      サービスを有効にする方法については、サービスを有効にするをご覧ください。

    以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。

  • GitHub で、要件に基づいて次のタスクを完了します。

    コネクタを構成する

    コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。

    1. Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。

      [接続] ページに移動

    2. [+ 新規作成] をクリックして [接続の作成] ページを開きます。
    3. [ロケーション] セクションで、接続のロケーションを選択します。
      1. リージョン: プルダウン リストからロケーションを選択します

        サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。

      2. [NEXT] をクリックします。
    4. [接続の詳細] セクションで、次の操作を行います。
      1. コネクタ: 使用可能なコネクタのプルダウン リストから [GitHub] を選択します。
      2. コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
      3. [接続名] フィールドに、接続インスタンスの名前を入力します。

        接続名は次の条件を満たす必要があります。

        • 接続名には英字、数字、ハイフンを使用できます。
        • 文字は小文字のみを使用できます。
        • 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
        • 接続名は 49 文字以内で指定してください。
      4. 必要に応じて、接続インスタンスの [説明] を入力します。
      5. 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトのログレベルは Error に設定されています。
      6. サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
      7. 必要に応じて、OwnerLogin を指定します。これは、ユーザーまたは組織に属する一意のログイン名です。
      8. 必要に応じて、スキーマを指定します。スキーマを使用すると、動的に取得されるスキーマを特定のプロジェクトまたはリポジトリ スキーマに制限できます。すべてのスキーマを取得するには、このフィールドに値を指定しないでください。サポートされているスキーマについては、スキーマとスコープをご覧ください。
      9. 必要に応じて、接続ノードの設定を構成します。

        • ノードの最小数: 接続ノードの最小数を入力します。
        • ノードの最大数: 接続ノードの最大数を入力します。

        ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。

      10. 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
      11. [NEXT] をクリックします。
    5. [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
      1. 宛先の種類: 宛先の種類を選択します。
        • リストから [ホストアドレス] を選択し、宛先のホスト名または IP アドレスを指定します。
        • バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。

        セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。

        他の宛先を入力するには、[+ 宛先を追加] をクリックします。

      2. [NEXT] をクリックします。
    6. [認証] セクションで、認証の詳細を入力します。

      これらの認証タイプの構成方法については、認証を構成するをご覧ください。

    7. [NEXT] をクリックします。
    8. Review: 接続と認証の詳細を確認します。
    9. [作成] をクリックします。

    認証を構成する

    使用する認証に基づいて詳細を入力します。

    • クライアント ID: アクセス トークンのリクエストに使用されるクライアント ID。
    • スコープ: 必要なスコープのカンマ区切りのリスト。
    • クライアント シークレット: 作成した接続されているアプリのクライアント シークレットを含む Secret Manager のシークレットです。

    接続構成のサンプル

    このセクションでは、接続の作成時に構成するさまざまなフィールドのサンプル値を示します。

    OAuth 2.0 - 認証コードの接続タイプ

    フィールド名 詳細
    ロケーション europe-west1
    コネクタ GitHub
    コネクタのバージョン 1
    接続名 GitHub-connector
    Cloud Logging を有効にする ×
    サービス アカウント Your_Project_Number@serviceaccount
    OwnerLogin souvikg-Your_Owner_Login
    スキーマ
    ノードの最小数 2
    ノードの最大数 50
    クライアント ID ClientID
    スコープ repo repo:status repo_deployment
    クライアント シークレット クライアント シークレット
    シークレット バージョン 1

    GitHub のスキーマとスコープ

    GitHub コネクタは、次のスキーマをサポートしています。
    • 情報スキーマ: このスキーマには、認証されたアカウントに関連付けられているプロジェクトとリポジトリのライセンス情報と概要を含むテーブルが含まれています。存在する情報スキーマは 1 つだけです。情報スキーマを取得するには、スキーマ フィールドに「Information」を指定します。
    • リポジトリ スキーマ: コネクタは、認証されたユーザーまたは組織のアカウント内の各リポジトリのスキーマをサポートします。リポジトリ スキーマを指定するには、次の形式を使用します: Repository_.
    • プロジェクト スキーマ: このコネクタは、認証されたユーザーまたは組織のアカウント内の各プロジェクトのスキーマをサポートします。プロジェクト スキーマを指定するには、次の形式を使用します: Project_

    スコープの詳細については、GitHub スコープをご覧ください。

    エンティティ、オペレーション、アクション

    すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。

    • エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。

      ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、Entities リストは空になります。

    • オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。

      使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがいずれかのエンティティ オペレーションをサポートしていない場合、サポートされていないオペレーションは Operations リストに含まれません。

    • アクション: コネクタ インターフェースを介して統合で使用できる主要な関数の一つです。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、Actions リストが空になります。

    システムの上限

    GitHub コネクタは、ノードごとに 1 秒あたり 2 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。

    Integration Connectors に適用される上限の詳細については、上限をご覧ください。

    アクション

    このセクションでは、GitHub コネクタでサポートされているアクションについて説明します。アクションの構成方法については、アクションの例をご覧ください。

    UpdatePullRequestBranch アクション

    このアクションにより、pull リクエストのブランチが更新されます。

    UpdatePullRequestBranch アクションの入力パラメータ

    名前 説明
    PullRequestId 文字列 pull リクエストのノード ID。
    ExpectedHeadOid 文字列 アップストリーム ブランチのヘッド参照 oid。
    UpdateMethod 文字列 使用する更新ブランチ メソッド。デフォルトは「MERGE」です。 指定できる値は MERGE と REBASE です。

    AppsDeployStatus アクションの出力パラメータ

    このアクションはステータス 200(OK)を返して、pull リクエスト ブランチを更新します。

    UpdatePullRequestBranch アクションの構成例については、をご覧ください。

    MergePullRequest アクション

    このアクションは pull リクエストを結合します。

    MergePullRequest アクションの入力パラメータ

    名前 説明
    PullRequestId 文字列 結合する pull リクエストのノード ID。
    ExpectedHeadOid 文字列 結合を許可するために pull リクエストのヘッド参照が一致している必要がある OID。省略した場合、チェックは行われません。
    CommitHeadline 文字列 結合 commit に使用する commit ヘッドライン。省略すると、デフォルトのメッセージが使用されます。
    CommitBody 文字列 結合 commit に使用する commit 本文。省略すると、デフォルトのメッセージが使用されます。
    MergeMethod 文字列 使用する結合方法。デフォルトは「MERGE」です。 指定できる値は MERGE、SQUASH、REBASE です。
    AuthorEmail 文字列 この結合に関連付けるメールアドレス。

    MergePullRequest アクションの出力パラメータ

    このアクションはステータス 200(OK)を返して、pull リクエストを結合します。

    MergePullRequest アクションの構成例については、をご覧ください。

    アクションの例

    このセクションでは、このコネクタでいくつかのアクションを実行する方法について説明します。

    例 - UpdatePullRequestBranch

    この例では、アプリケーションのデプロイ ステータスを取得します。

    1. [Configure connector task] ダイアログで、[Action] をクリックします。
    2. [UpdatePullRequestBranch] アクションを選択してから、[完了] をクリックします。
    3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
            {
          "PullRequestId": "PR_kwDOLywhW8537gcA"
            } 
        
    4. アクションが成功すると、UpdatePullRequestBranch タスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

             {
          "pullrequestid": "PR_kwDOLywhW8537gcA"
             } 
        

    例 - MergePullRequest

    この例では、pull リクエストを結合します。

    1. [Configure connector task] ダイアログで、[Action] をクリックします。
    2. [MergePullRequest] アクションを選択してから、[完了] をクリックします。
    3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
            {
          "PullRequestId": "PR_kwDOLywhW8537gcA",
          "CommitHeadline": "Google MERGE",
          "CommitBody": "This is Google Merge"
            }
        
    4. アクションが成功すると、MergePullRequest タスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

              {
          "pullrequestid": "PR_kwDOLywhW8537gcA"
              } 
        

    エンティティ オペレーションの例

    このセクションでは、このコネクタでエンティティ オペレーションの一部を実行する方法について説明します。

    例 - すべてのブランチを一覧表示する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Branches を選択します。
    3. [List] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、要件に応じて filterClause を設定できます。

    例 - すべての Commit を一覧表示する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Commits を選択します。
    3. [List] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、要件に応じて filterClause を設定できます。

    考慮事項

    • Commits はエンティティの名前です。フィルタ句の値は、単一引用符(')を使用して渡す必要があります(例: City='Redwood City')。ここで、City は列名で、Redwood city は値です。
    • フィルタ句を使用すると、列に基づいてレコードをフィルタできます。たとえば、name = demo16975280986860 を含むレコードが 20 件ある場合、列 Address='Redwood City' と region='us-east1' を使用してレコードをフィルタできます。

    List オペレーションは、次のエンティティに対して実行できます。

    CommitComments、Forks、IssueComments、Issue、IssueAssignees、AssignableUser、Labels、Milestones、PullRequestReviews、PullRequests、PullRequestComments、ReleaseAssets、Releases、Watcher、Users、Repositories、Collaborators、OrganizationTeams、OrganizationsMannequins、OrganizationMember、Organization、Licenses、LicensePermission、LicenseLimitation、LicenseConditions、Projects、PullRequestReviewRequests。

    例 - ブランチのレコードを取得する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Branches を選択します。
    3. [Get] オペレーションを選択し、[完了] をクリックします。
    4. ここでは、エンティティ ID が 4 に設定されています。エンティティ ID を設定するには、[コネクタ] タスクの [タスク入力] セクションで [EntityId] をクリックし、[デフォルト値] に 4 を入力します。

    例 - Repositories レコードを取得する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Repositories を選択します。
    3. [Get] オペレーションを選択し、[完了] をクリックします。
    4. エンティティ ID を 4 に設定します。これは渡されるキーです。エンティティ ID を設定するには、[コネクタ] タスクの [タスク入力] セクションで [EntityId] をクリックし、[デフォルト値] に 4 を入力します。
    5. 2 つの複合キーが存在するため、単一のエンティティ ID を渡すとエラーが発生することがあります。このような場合は、必要な列を指定してフィルタ句を使用します。

      ビューには主キーがないため、ビューに対して Get オペレーションは機能しません。代わりに、ビューのフィルタを使用して List オペレーションを使用できます。これは Get オペレーションと同様に機能します。

    Get オペレーションは、次のエンティティに対して実行できます。

    CommitComments、Commits、IssueAssignees、Labels、Milestones、PullRequestReviews、PullRequests、PullRequestComments、ReleaseAssets、Release、Topics、Users、Collaborators、Organizations、Licenses

    例 - Issues レコードを作成する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Issues を選択します。
    3. [Create] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
           {
        "Title": "Google_Cloud_GitHub_Issues_Create",
        "Body": "Please check hence raising the Feature Request for the same."
           }
      

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

           {
        "Id": "I_kwDOLywhW86Sd-xF"
           } 
      

    例 - PullRequests レコードを作成する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から PullRequests を選択します。
    3. [Create] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
           {
        "BaseRefName": "main",
        "HeadRefName": "New_Branch",
        "Title": "DEMO_Google_Cloud_PULLRequest",
        "Body": "This is demo Google_Cloud pull"
           }
      

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

            {
        "Id": "PR_kwDOLywhW8537gcA"
            }
      

    例 - Repositories レコードを作成する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Repositories を選択します。
    3. [Create] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
           {
        "Name": "Google_Cloud_DEMO_REPO",
        "OwnerId": "O_kgDOCaxLsg",
        "Visibility": "PUBLIC"
           }
      

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

            {
        "Id": "R_kgDOMhWBEQ"
            } 
      

    例 - Issues レコードを更新する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Issues を選択します。
    3. [Update] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
           {
        "Title": "New_Updated_Google_Cloud_Issue",
        "Body": "Newly Updated from Google_Cloud"
           }
      
    5. entityId の値を I_kwDOLywhW86Sd-xF に設定します。filterClause の値を設定するには、[entityId] をクリックし、[デフォルト値] フィールドに「I_kwDOLywhW86Sd-xF」と入力します。

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

           {
        "Id": "I_kwDOLywhW86Sd-xF"
           }
      

    例 - PullRequests レコードを更新する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から PullRequests を選択します。
    3. [Update] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
            {
        "Title": "Updated_Google_Cloud_PULL",
        "Body": "Update New pull Body"
            }
      
    5. entityId の値を PR_kwDOLywhW8537gcA に設定します。filterClause の値を設定するには、[entityId] をクリックし、[デフォルト値] フィールドに「PR_kwDOLywhW8537gcA」と入力します。

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

            {
        "Id": "PR_kwDOLywhW8537gcA"
            } 
      

    例 - Repositories レコードを更新する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から Repositories を選択します。
    3. [Update] オペレーションを選択してから、[完了] をクリックします。
    4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
            {
        "Name": "Updated_New_Google_Cloud_Repo"
            }
      
    5. entityId の値を R_kgDOMhWBEQ に設定します。filterClause の値を設定するには、[entityId] をクリックし、[デフォルト値] フィールドに「R_kgDOMhWBEQ」と入力します。

      この例を実行すると、コネクタ タスクの connectorOutputPayload 出力変数で次のようなレスポンスが返されます。

            {
        "Id": "R_kgDOMhWBEQ"
            }
      

    例 - PullRequestReviewRequests レコードを削除する

    1. [Configure connector task] ダイアログで、[Entities] をクリックします。
    2. Entity から PullRequestReviewRequests を選択します。
    3. [Delete] オペレーションを選択し、[完了] をクリックします。
    4. filterClause の値を設定し、[filterClause] をクリックして、[デフォルト値] フィールドに「PullRequestId= 'PR_kwDOLywhW85yNWPa' and RequestedReviewerUserId= 'U_kgDOCebPLA'」と入力します。
    5. この例では、PullRequestReviewRequests はテーブルの名前であり、filterClause の値は直接渡す必要があります。
      例: PullRequestId= 'PR_kwDOLywhW85yNWPa' と RequestedReviewerUserId= 'U_kgDOCebPLA'。
      ここで、PullRequestId= 'PR_kwDOLywhW85yNWPa' と RequestedReviewerUserId= 'U_kgDOCebPLA' は、渡す必要がある一意の主キー値です。

    統合で GitHub 接続を使用する

    接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。

    • Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
    • Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。

    Google Cloud コミュニティの助けを借りる

    Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。

    次のステップ