Docs 菜单
Docs 主页
/ /
Atlas App Services
/ /

GitHub 服务 [已弃用]

在此页面上

  • Overview
  • 配置参数
  • 服务操作
  • 和传入网络钩子,
  • 配置
  • 请求有效负载
  • Webhook 函数示例
  • 配置 GitHub
  • 将 Webhook 添加到 GitHub 存储库

重要

第三方服务和推送通知弃用

App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。

Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。

现有服务将继续运行到 9 月30 ,2025

由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:

  • 在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。

  • 启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。

GitHub 是一个基于 Web 的开发平台,用于托管和审核 Git 存储库。

Atlas App Services Github 服务允许您的应用程序对 Github 存储库中的事件React,例如新的请求或问题。

创建 GitHub 服务接口时,您需要为以下参数提供值:

<Service Name>/config.json
{
"name": "<Service Name>",
"type": "github",
"config": {}
}
Parameter
说明
Service Name
config.name
此 GitHub 服务接口的名称。 它必须不同于应用程序中的所有其他服务接口。

Github服务不提供任何服务操作。 使用 传入 Webhook响应Github库中的事件。

注意

将 GitHub Webhook 转换为端点

Github 服务 webhook 已弃用,取而代之的是自定义 HTTPS endpoints。要了解如何将现有 Github Webhook 迁移到端点,请参阅将 Webhook 转换为 HTTPS endpoints。

每当存储库中发生特定事件时, Github都可以调用一个或多个 Webhook。 如果您想了解有关Github 的 Webhook 功能的更多信息,包括有关Github 事件类型的详细参考信息,请参阅Github 的 Webhook 文档。

配置Github传入 Webhook时,您需要提供以下形式的配置文件:

{
"name": <string>,
"respond_result": <boolean>,
"run_as_user_id": <string>,
"run_as_user_id_script_source": <string>,
"options": {
"secret": <string>
},
}
配置值
说明
Webhook Name
name
必需。 Webhook 的名称。 GitHub 服务接口中的每个传入 Webhook 都必须具有唯一名称。
Respond With Result
respond_result
必需。 如果 true ,则 App Services 将 Webhook 函数的返回值在响应正文中发送到 GitHub。
Run Webhook As
run_as_user_id
run_as_user_id_script_source

可选。 调用 Webhook 时执行 Webhook 函数的App Services 用户的 ID。

可通过三种方式配置执行用户:

  • System:执行用户是系统用户,对MongoDB CRUD和聚合 API 具有完全访问权限,并绕过所有规则和模式验证。

  • User Id:您可以选择特定的应用程序用户来执行该功能。

  • Script:您可以定义一个返回执行用户id函数

您可以直接在run_as_user_id中指定用户 ID,也可以提供字符串化的Atlas Function以接受 Webhook 有效负载并在run_as_user_id_script_source中返回用户 ID。 如果未指定特定用户ID 或解析为用户ID 的函数, App Services将以对 MongoDBCRUD和聚合 API 具有完全访问权限的 系统用户 身份执行 Webhook 函数,并绕过所有规则和模式验证。

Request Validation
config.secret
GitHub 在传入请求中包含的GitHub Secret字符串,用于证明请求有效。 提供 Webhook URL 时,必须在 GitHub 存储库的设置中指定此值。

App Services 会自动将payload文档作为第一个参数传递给传入的 Webhook 函数。 在 GitHub 服务传入的 Webhook 中, payload对象表示导致 GitHub 调用 Webhook 的 GitHub 事件。

注意

Github payload 文档的确切内容因其代表的事件类型而异。 有关特定事件类型有效负载文档的详细说明,请参阅Github 的 事件类型和有效 负载 文档。

以下 Webhook 函数将传入数据插入 MongoDB collection。

exports = function(payload) {
const mongodb = context.services.get("mongodb-atlas");
const requestlogs = mongodb.database("test").collection("requestlogs");
return requestlogs
.insertOne({
"commits": payload.commits,
"pushed_by": payload.pusher,
"repo": payload.repository.html_url
})
.then(({ insertedId }) => `Inserted document with _id: ${insertedId}`)
}

payload文档由 GitHub 服务传递,包含请求中的信息。

  1. 登录Github 。

  2. 导航到要订阅的存储库。

  3. 单击存储库的Settings标签页,然后从左侧菜单中选择Webhooks

  4. 单击 Add Webhook(连接)。

  5. 将 Webhook URL 添加到Payload URL字段。

  6. 将内容类型设置为application/json

  7. 输入GitHub Secret 。 这应该与您在 Webhook 配置中提供的值匹配。

  8. 选择您要订阅的事件类型。

  9. 单击 Add webhook(连接)。

后退

AWS