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 笔交易,并会对超出此限制的所有交易进行节流。默认情况下,集成连接器会为连接分配 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"
              } 
        

    实体操作示例

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

    示例 - 列出所有分支

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择 Branches
    3. 选择 List 操作,然后点击完成
    4. 连接器任务的任务输入部分,您可以根据需要设置 filterClause

    示例 - 列出所有提交

    1. Configure connector task 对话框中,点击 Entities
    2. Entity 列表中选择 Commits
    3. 选择 List 操作,然后点击完成
    4. 连接器任务的任务输入部分,您可以根据需要设置 filterClause

    注意事项

    • Commits 是实体的名称。您必须使用单引号 (') 传递过滤条件子句的值,例如 City='Redwood City'。其中,City 是列名称,Redwood city 是值。
    • 您可以使用过滤子句根据列过滤记录。例如,如果有 20 条包含 name = demo16975280986860 的记录,那么我们可以过滤出列 Address='Redwood City' 且 region='us-east1' 的记录。

    您可以对以下实体执行“列出”操作:

    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 记录

    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. 在某些情况下,由于存在两个复合键,传递单个实体 ID 可能会导致错误。在这种情况下,请使用过滤子句和必要的列。

      对于视图,Get 操作不起作用,因为视图没有主键。 不过,您可以将 List 操作与视图过滤条件搭配使用,其运作方式与 Get 操作类似。

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

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

    示例 - 创建“问题”记录

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

    示例 - 创建“代码库”记录

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

    示例 - 更新“问题”记录

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

    示例 - 更新“代码库”记录

    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 中创建和使用连接器任务,请参阅连接器任务
    • 如需了解如何在 Application Integration 中创建和使用连接器任务,请参阅连接器任务

    向 Google Cloud 社区寻求帮助

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

    后续步骤