@useairfoil/producer-github

中文文档
0.0.3发布于 2026/11/03TypeScriptES Module构建来源已验证

同步存储库、问题、拉取请求、评论、审查、提交、检查、操作运行和作业,并从一个GitHub应用程序安装发布。它回填每个资源,获取webhook POST /webhooks/github,每15分钟进行一次民意调查

中文使用文档
文档目录7 节
  1. 配置
  2. 设置
  3. API版本
  4. 数据
  5. 限制
  6. 演示数据
  7. 地方发展

GitHub生产商

同步存储库、问题、拉取请求、评论、审查、提交、检查、 操作运行和作业,并从一个GitHub应用程序安装发布。它 回填每个资源,获取webhook POST /webhooks/github,以及民意测验 每15分钟更换一次。

资源什么
repositories安装程序可以读取的存储库
issues问题,没有拉请求
pull_requests把请求
issue_comments对问题的评论和pull请求
pull_request_reviews拉取请求审核
pull_request_review_comments对拉取请求差异的评论
pull_request_commits在每个拉取请求中提交
commits在默认分支上提交
check_runs检查运行情况,例如Actions作业和其他应用程序
commit_statuses从CI服务提交状态
workflow_runs操作流程运行
workflow_jobs工作流运行的作业及其步骤
releases发布,以及它们的资产

配置

变量要求默认的
GITHUB_APP_CLIENT_ID是无
GITHUB_APP_PRIVATE_KEY是无
GITHUB_INSTALLATION_ID是无
GITHUB_WEBHOOK_SECRET是无

私钥可以在一行中使用 \n 换行。

设置

创建一个GitHub应用程序 开发者设置→GitHub应用程序:

  • Webhook URL <connector>/webhooks/github,带着一个随机的秘密。
  • 存储库权限,只读:操作、检查、提交状态、 内容、问题和拉取请求。
  • 事件:检查运行、发布评论、问题、拉取请求、拉取请求审核、 Pull请求review comments, Push, Release, Repository, Status, Workflow job和Workflow运行。

生成一个私钥,然后安装应用程序并选择要同步的存储库。 安装ID是安装页面URL末尾的数字。

一个应用有一个webhook URL,所以每个连接器使用一个应用。

API版本

连接器固定REST API版本 2026-03-10 与 X-GitHub-Api-Version 头。

数据

  • issues 没有拉取请求。 issue_comments 对两者都有评论。
  • 已删除的存储库、问题、注释和发布得到 _deleted. 一个 已转让的issue在旧ID下被删除。
  • commits 和 pull_request_commits 保留作者和提交者的名字,而不是 电子邮件。
  • 评论、检查运行和作业在GitHub中没有更新时间。他们的版本 就是连接器读取它们的时候。
  • 删除存储库时,存储库的问题、拉取请求和注释会保留下来 或者离开安装。
  • 正文是自由文本。将私有存储库数据视为机密。

限制

  • 删除只来自于webhook。错过的删除会保留,即使在新的删除之后 回填。一旦GitHub报告了已恢复的存储库,就会返回 更新时间。
  • 在回填期间删除的行可以使下一页跳过一行。
  • commits 仅为默认分支。轮询使用提交时间,所以 之后推送的旧提交只会通过webhook实现。
  • 在默认分支提交之后,检查运行和状态被轮询一次, 因此,稍后完成的检查只通过webhook更新。网络钩子带来它们 对于每个分支。
  • pull_request_commits 每个拉取请求最多提交250次。提交 通过用力推拉杆移开。
  • 释放资产 download_count 是从上次发布的吗 改变了。
  • 工作流运行在启动后的一天内进行轮询。稍后的重播出现了 webhook。这是它的最新尝试;乔布斯坚持每一次尝试。
  • 审核、拉请求提交、检查运行、状态和作业都需要花费一个 在回填和每次更改中,每个拉取请求、提交或运行的请求。 具有多年CI的大型存储库可能需要数小时的速率限制才能进行回填。
  • 轮询每个存储库每15分钟花费大约12个请求,加上 上面的。大约250个活动存储库达到了GitHub的限制。

演示数据

pnpm demo --size 128MiB 在没有GitHub凭证的情况下写入编造的GitHub数据。 请参阅Connector Kit README,了解所需的标志和变量。

每个更改都有一个问题,修复它的pull请求,评论,审查, 提交,CI与作业和检查运行一起运行,并且,一旦合并,在main上进行提交 使用部署状态。有些合并会发布一个版本。6个存储库不会增长 尺寸。

地方发展

cd connectors/producer-github
pnpm sandbox

webhook需要一个公共URL来转发 http://localhost:8080/webhooks/github.

要录制VCR,请输入测试应用程序的值 .env、删除 test/__cassettes__/api.vcr.test.cassette,然后跑 pnpm test:ci.

pnpm start 运行托管连接器。它需要Wings和PostgreSQL 连接器套件README中的变量。

版本与发布记录

@useairfoil/producer-github 共发布 4 个版本,首次发布于 2026/10/29;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.3latest2026/11/03今天
0.0.22026/10/295 天前
0.0.12026/10/295 天前
0.0.0-stage2026/10/295 天前

关于 @useairfoil/producer-github 的常见问题

@useairfoil/producer-github 是什么?

同步存储库、问题、拉取请求、评论、审查、提交、检查、操作运行和作业,并从一个GitHub应用程序安装发布。它回填每个资源,获取webhook POST /webhooks/github,每15分钟进行一次民意调查

如何安装 @useairfoil/producer-github?

在项目目录运行 npm install @useairfoil/producer-github,或使用 pnpm add / yarn add / bun add。

@useairfoil/producer-github 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@useairfoil/producer-github 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@useairfoil/producer-github 可以商用吗?

@useairfoil/producer-github 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@useairfoil/producer-github 还在维护吗?

最新版本 0.0.3 发布于 2026/11/03(今天);至今共发布 4 个版本,其中过去 12 个月发布了 4 个;首次发布于 2026/10/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。