GitHub

借助 GitHub 连接器,您可以对 GitHub 数据执行插入、删除、更新和读取操作。

准备工作

在使用 GitHub 连接器之前,请先完成以下任务:

  • 在您的 Google Cloud 项目中:
    • 向配置连接器的用户授予 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. 点击下一步
    4. 连接详情部分中,完成以下操作:
      1. 连接器:从可用连接器下拉列表中选择 GitHub
      2. 连接器版本:从可用版本的下拉列表中选择一个连接器版本。
      3. 连接名称字段中,输入连接实例的名称。

        连接名称必须符合以下条件:

        • 连接名称可以使用字母、数字或连字符。
        • 字母必须小写。
        • 连接名称必须以字母开头,以字母或数字结尾。
        • 连接名称不能超过 49 个字符。
      4. (可选)输入连接实例的说明
      5. 您可以选择启用 Cloud Logging,然后选择日志级别。默认情况下,日志级别设置为 Error
      6. 服务账号:选择具有所需角色的服务账号。
      7. 可选:指定 OwnerLogin:用户或组织的唯一登录名称。
      8. (可选)指定架构:使用架构将动态检索的架构限制为特定项目或代码库架构。如需检索所有架构,请勿在此字段中指定任何值。如需了解受支持的架构,请参阅架构和范围
      9. (可选)配置连接节点设置

        • 节点数下限:输入连接节点数下限。
        • 节点数上限:输入连接节点数上限。

        节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。

      10. (可选)点击 + 添加标签,以键值对的形式向连接添加标签。
      11. 点击下一步
    5. 目标部分中,输入要连接到的远程主机(后端系统)的详细信息。
      1. 目的地类型:选择目的地类型
        • 从列表中选择主机地址,以指定目标的主机名或 IP 地址。
        • 如果要与后端系统建立专用连接,请从列表中选择端点连接,然后从端点连接列表中选择所需的端点连接。

        如果要与后端系统建立公共连接以提高安全性,您可以考虑为连接配置静态出站 IP 地址,然后将防火墙规则配置为仅将特定静态 IP 地址列入许可名单。

        要输入其他目标,请点击 + 添加目标

      2. 点击下一步
    6. 身份验证部分中,输入身份验证详细信息。

      如需了解如何配置这些身份验证类型,请参阅配置身份验证

    7. 点击下一步
    8. 查看:查看您的连接和身份验证详细信息。
    9. 点击创建

    配置身份验证

    根据您要使用的身份验证输入详细信息。

    • 客户端 ID:请求访问令牌时所用的客户端 ID。
    • 范围:所需范围的逗号分隔列表。
    • 客户端密钥:包含您创建的关联应用的客户端密钥的 Secret Manager 密文。

    连接配置示例

    本部分列出了您在创建关联时配置的各种字段的示例值。

    OAuth 2.0 - 授权代码连接类型

    字段名称 详细信息
    位置 europe-west1
    连接器 GitHub
    连接器版本 1
    连接名称 GitHub 连接器
    启用 Cloud Logging
    服务账号 Your_Project_Number@serviceaccount
    OwnerLogin souvikg-Your_Owner_Login
    架构
    节点数下限 2
    节点数上限 50
    客户端 ID ClientID
    权限范围 repo repo:status repo_deployment
    客户端密钥 客户端密钥
    密钥版本 1

    GitHub 架构和范围

    GitHub 连接器支持以下架构:
    • 信息架构:此架构包含表,其中包含许可信息以及与已验证身份的账号关联的项目和代码库的概要信息。只有一个信息架构。如需检索信息架构,请在架构字段中指定以下内容:Information
    • 代码库架构:该连接器支持已验证用户或组织账号中的每个代码库的架构。请使用以下格式指定代码库架构:Repository_
    • 项目架构:该连接器支持已验证用户或组织账号中的每个项目的架构。请使用以下格式指定项目架构:Project_

    如需详细了解镜重,请参阅 GitHub 镜重

    实体、操作和动作

    所有集成连接器都会为所连接应用的对象提供抽象层。您只能通过此抽象访问应用的对象。抽象作为实体、操作和动作向您展示。

    • 实体:实体可以被视为连接的应用或服务中的对象或属性集合。不同连接器的实体定义也会有所不同。例如,在数据库连接器中,表是实体;在文件服务器连接器中,文件夹是实体;在消息传递系统连接器中,队列是实体。

      但是,连接器可能不支持或不支持任何实体,在这种情况下, “Entities”列表将为空。

    • 操作:操作是指您可以对实体执行的操作。您可以对实体执行以下任一操作:

      从可用列表中选择一个实体,系统会生成该实体可用的操作列表。如需了解操作的详细说明,请参阅连接器任务的实体操作。但是,如果连接器不支持任何实体操作, 操作未在 Operations 列表中列出。

    • 动作:动作是可通过连接器接口提供给集成的头等函数。动作可让您对一个或多个实体进行更改,并且动作因连接器而异。通常,操作有一些输入参数和一个输出 参数。但可能的情况是,连接器不支持任何动作,在这种情况下,Actions 列表将为空。

    系统限制

    GitHub 连接器每秒可处理 2 个事务, 每节点, 并throttles任何事务 。 默认情况下,Integration Connectors 会为连接分配 2 个节点(以提高可用性)。

    如需了解适用于集成连接器的限制,请参阅限制

    操作

    本部分列出了 GitHub 连接器支持的操作。如需了解如何配置此操作,请参阅操作示例

    UpdatePullRequestBranch 操作

    此操作会更新拉取请求分支。

    UpdatePullRequestBranch 操作的输入参数

    名称 类型 说明
    PullRequestId 字符串 拉取请求的节点 ID。
    ExpectedHeadOid 字符串 上游分支的 head ref oid。
    UpdateMethod 字符串 要使用的更新分支方法。默认值为“MERGE”。 允许的值为 MERGE 和 REBASE。

    AppsDeployStatus 操作的输出参数

    此操作会返回状态 200(OK)并更新拉取请求分支。

    如需了解如何配置 UpdatePullRequestBranch 操作,请参阅示例

    MergePullRequest 操作

    此操作会合并拉取请求。

    MergePullRequest 操作的输入参数

    名称 类型 说明
    PullRequestId 字符串 要合并的拉取请求的节点 ID。
    ExpectedHeadOid 字符串 拉取请求头引用必须与此 OID 匹配才能进行合并;如果省略,则不会执行任何检查。
    CommitHeadline 字符串 要用于合并提交的提交标题;如果省略,则使用默认消息。
    CommitBody 字符串 用于合并提交的提交正文;如果省略,则会使用默认消息。
    MergeMethod 字符串 要使用的合并方法。默认值为“MERGE”。 允许的值包括 MERGE、SQUASH 和 REBASE。
    AuthorEmail 字符串 与此合并相关联的电子邮件地址。

    MergePullRequest 操作的输出参数

    此操作会返回状态 200(OK)并合并拉取请求。

    如需了解如何配置 MergePullRequest 操作,请参阅示例

    操作示例

    本部分介绍如何在此连接器中执行一些操作。

    示例 - UpdatePullRequestBranch

    以下示例会检索应用的部署状态。

    1. Configure connector task 对话框中,点击 Action
    2. 选择 UpdatePullRequestBranch 操作,然后点击完成
    3. 连接器任务的任务输入部分,点击 connectorInputPayload,然后在 Default Value 字段:
            {
          "PullRequestId": "PR_kwDOLywhW8537gcA"
            } 
        
    4. 如果操作成功, UpdatePullRequestBranch 任务的 connectorOutputPayload 响应 参数的值类似于以下内容:

             {
          "pullrequestid": "PR_kwDOLywhW8537gcA"
             } 
        

    示例 - MergePullRequest

    此示例合并了一个拉取请求。

    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"
              } 
        

    实体操作示例

    本部分介绍如何在此连接器中执行一些实体操作。

    示例 - 对实体“Branches”执行 LIST 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“分支”。
    3. 选择 LIST 操作,然后点击完成
    4. 连接器任务的任务输入部分中,您可以根据客户要求设置 filterClause。请查看下方的“备注”部分

    在本示例中,分支是实体的名称,过滤器子句的值应始终在单引号 (') 内传递,例如 City='Pune'。City 是列名称,Pune 是值

    您可以使用 Filter 子句,根据列过滤特定的记录集。如果有 20 条名称为“demo16975280986860”的记录,则您可以使用“Address='Miami”列过滤记录和区域='us-east1'。

    您可以对以下实体执行 LIST 操作:

    Commits、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。

    示例 - 针对实体“Branches”执行的 GET 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“分支”。
    3. 选择 GET 操作,然后点击 完成
    4. 将实体 ID 设置为 4,即要传递的 Key。如需设置实体 ID,请在连接器任务的任务输入部分,点击 EntityId,然后在默认值字段中输入 4

    在此示例中,分支是实体的名称,必须直接传递实体 ID 的值,例如 4。如果传递的单个实体 ID 因两个复合键而抛出错误,请将过滤条件子句与所需列一起使用

    示例 - 针对实体“仓库”的 GET 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“代码库”。
    3. 选择 GET 操作,然后点击 完成
    4. 将实体 ID 设置为 4,即要传递的 Key。要设置实体 ID,请在 在 Connectors 任务的 Task Input 部分中,点击 EntityId,然后 然后在 Default Value 字段中输入 4

    在此示例中,仓库是实体的名称,必须直接传递实体 ID 的值,例如 4。如果传递的单个实体 ID 因两个复合键而抛出错误,请将过滤条件子句与所需列一起使用

    您可以对以下实体执行 GET 操作:

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

    示例 - 针对实体“Issues”的 CREATE 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“问题”。
    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”执行 CREATE 操作

    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”的 CREATE 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“代码库”。
    3. 选择 Create 操作,然后点击完成
    4. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
           {
        "Name": "Google_Cloud_DEMO_REPO",
        "OwnerId": "O_kgDOCaxLsg",
        "Visibility": "PUBLIC"
           }

      运行此示例,在连接器中返回与以下内容类似的响应 任务的 connectorOutputPayload 输出变量:

            {
        "Id": "R_kgDOMhWBEQ"
            } 

    示例 - 对实体“Issues”执行 UPDATE 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“问题”。
    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,然后在 Default Value 中输入 I_kwDOLywhW86Sd-xF 字段。

      运行此示例会在连接器任务的 connectorOutputPayload 输出变量中返回类似于以下内容的响应:

           {
        "Id": "I_kwDOLywhW86Sd-xF"
           }

    示例 - 对实体“PullRequests”的 UPDATE 操作

    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,然后在 Default Value 中输入 PR_kwDOLywhW8537gcA 字段。

      运行此示例会在连接器任务的 connectorOutputPayload 输出变量中返回类似于以下内容的响应:

            {
        "Id": "PR_kwDOLywhW8537gcA"
            } 

    示例 - 针对实体“Repositories”的 UPDATE 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择“代码库”。
    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”执行的 DELETE 操作

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择 PullRequestReviewRequests。
    3. 选择 DELETE 操作,然后点击 完成
    4. 设置 filterClause 的值, 点击 filterClause,然后在默认值中输入 PullRequestId= 'PR_kwDOLywhW85yNWPa' and RequestedReviewerUserId= 'U_kgDOCebPLA' 字段。
  • 在集成中使用 GitHub 连接

    创建连接后,该连接便可在 Apigee Integration 和 Application Integration。您可以使用连接 通过连接器任务在集成中进行集成。

    • 如需了解如何在 Apigee Integration 中创建和使用连接器任务,请参阅连接器任务
    • 如需了解如何在 Application Integration 中创建和使用连接器任务,请参阅连接器任务

    向 Google Cloud 社区寻求帮助

    您可以在 Google Cloud 社区的 Cloud 论坛中发布您的问题以及讨论此连接器。

    后续步骤