使

使用 Probot 开发我的第一个 GitHub 应用程序

2025-06-08

使用 Probot 开发我的第一个 GitHub 应用程序

我在 GitHub 上自动邀请协作者的计划

除了在 GitHub 担任开发倡导者之外,我还兼职担任 G{Code} House 的编程总监。G{Code} House 是一个非营利组织,致力于帮助有色人种女性和非二元性别者接触 Web 开发。

我从2020年开始与G{Code}合作,目前正在主持第四期课程。这是一段耗时但收获颇丰的经历。过去三年,我学到了很多关于提升沟通技巧、教学、授权、活动策划和同理心的知识。

最近,在参加 GitHub Universe 活动后,我意识到可以将部分课程资料存储在 GitHub 上。在此之前,我把资料存储在 Google Drive 上,只考虑过将代码和文档存储在 GitHub 上。在 GitHub Universe 活动中,David J. Malan 介绍了他如何利用 GitHub 教授哈佛大学规模最大的计算机科学入门课程 CS50。CS50 团队开发了一个名为 submit50 的 GitHub Action,用于处理 800 多名学生的家庭作业和课堂作业提交。我可以使用 GitHub 存储课程资料并实现流程自动化吗?可以。

将幻灯片、代码示例和其他相关课程作业迁移到新的代码库后,我决定将邀请协作者(或志愿者)为代码库做出贡献的流程自动化。但是,我不希望每个人都拥有代码库的写权限。虽然我可以手动授予每位志愿者权限,但使用 GitHub Actions 或 Probot 构建的自动化流程更容易管理和扩展协作者邀请。我希望摆脱中间人的角色,因为有时来回沟通太多。目前,像下面示例中这样的互动还可以,但随着组织的发展,我认为将责任放在协作者身上会更有益处。

图片描述

我将尝试使用 Probot 和 GitHub Actions 构建一个自动邀请工作流程。二月份,我将记录并比较使用这两个工具进行自动邀请的经验。

首先,我需要学习如何使用 Probot 构建 GitHub 应用。Probot 是一个用于开发自动化 GitHub 工作流程的应用框架。它会监听来自代码库的事件,例如新的提交、评论和问题的创建,并自动创建响应。为了构建我的第一个 Probot 应用,我遵循了Probot 文档以及Brian Douglas 撰写的无服务器 Probot 应用构建指南

构建我的第一个 Probot 应用程序

步骤 1:我通过在终端中运行以下命令生成了一个新的 Probot 应用程序:

npx create-probot-app automation-invite。该命令应该会提示您提出一些问题,如下图所示:

图片描述

第二步:我检查文件夹是否有新创建的文件,其中包括一个 index.js 文件。此外,我还发现 index.js 文件包含示例代码,用于在参与者提交问题时自动添加评论。

图片描述

图片描述

步骤 3:在我的应用程序中,我运行了命令npm run start

图片描述

步骤 4:终端中显示的消息提示您缺少必要的配置值。为了设置这些配置值,我导航到http://localhost:3000 。我看到了下面的“Probot 入门”屏幕,并选择了“注册 GitHub 应用”选项

图片描述

第 5 步:我为我的 GitHub App 命名。

图片描述

第 6 步:我在目标组织和存储库中安装了我的 GitHub App。

图片描述

步骤 7:我停止运行应用程序,然后使用命令重新启动它npm run start。我检查了我的 .env 文件。幸运的是,步骤 4 到 6 自动填充了所需的环境变量,包括我的 webhook URL。(它使用 smee.io 在本地测试、接收和发送有效负载。此方法仅在我在本地运行应用程序时有效。将来我需要让应用程序能够在本地开发之外运行。)

步骤 8:我通过在仓库中提交一个 Issue 来测试该应用。不出所料,GitHub 应用对这个 Issue 做出了回应,评论为:“感谢您提交此 Issue!”

图片描述

步骤9:我将代码推送到我的代码库,就这样。我用Probot创建了我的第一个GitHub应用程序。

在接下来的博客文章中,我会将此应用迁移到无服务器 Lambda 并使其适用于我的用例。我的最终目标是让潜在的合作者在为该代码库点赞后收到邀请。

您可以查看我的存储库

这篇博文是我“28 天 Git 学习系列:自动化和改进工作流程”的一部分。想获得更多技巧并和我一起学习,请关注GitHub Dev 团队

鏂囩珷鏉ユ簮锛�https://dev.to/github/developing-my-first-github-app-with-probot-3g0p
PREV
GitHub verdinho:到底还是什么?
NEXT
使用 GitHub Pages 创建免触摸二维码菜单 blackgyalbites blackgyalbites blackgyalbites