📜  GitHub 应用程序为问题添加或删除标签

📅  最后修改于: 2021-10-24 12:52:38             🧑  作者: Mango

Github 应用程序(或 Github 机器人)是 Github 上的一流参与者,用于从存储库维护者手中分担多余的工作。 Github 上的一流参与者意味着它有能力做维护者想要做的事情,并且在事先给予适当的权限的情况下对机器人进行了编程。机器人通过接收在 Github 上触发的事件的 webhook 来工作(一条评论要求机器人删除受让人,添加标签,将问题移动到另一个仓库),然后触发适当的代码(代码是事件样式的,稍后会很明显)在文章中)回应它。触发的代码使机器人做事。可以外包给机器人的工作之一是管理问题的标签。在本文中,我们将使用 Probot 构建一个 Github 应用程序来为问题添加或删除标签。
使用的框架:Probot
我们还将使用 probot-commands npm 模块来输入命令。

GitHub 应用程序的初始设置

要设置 github 应用程序,可以查看 probot 的文档。由于设置不是本文的重点,我们将在 Glitch 上重新混合 Probot 应用程序。可以在此处找到此设置的链接。
Glitch remix 中的 README.md 有关于设置应用程序的精彩指南。

要检查正确的应用程序设置,请通过在 repo 上发出问题来运行随应用程序安装提供的默认代码(假设应用程序已安装在 repo 上)。
indexjs-第一个代码片段

输出:机器人(GitHub 应用程序)应该写如下评论。
正确的应用程序设置

如果这不是输出,则表示应用程序未正确安装,应在此处查阅文档。

在应用程序设置完成并完成初始测试后(以确保应用程序配置正确并正常工作),是时候安装我们需要的 npm 模块了。

安装依赖项/模块

我们需要一个 probot-commands npm 模块才能让这个应用程序工作。要安装它们,请从左侧导航窗格中转到“package.json”文件。在编辑器的左上角,找到一个标记为“ Add Package ”的按钮。使用此按钮,将“ probot-commands ”添加到应用程序。
添加这两个模块后,转到’ index.js ‘文件(使用左侧的导航窗格)并添加

const commands = require("probot-commands");

在 index.js 文件之上,像这样:
probotcommands 模块添加到 indexjs

此时,我们应该很好地开发用于添加或删除问题标签的核心逻辑。
index.js 代码在这里。

代码(来自项目的 index.js 文件)

在这里,我们将使用 probot-commands 模块从问题评论中识别命令。可以在他们的 GitHub 存储库中找到有关命令模块如何工作的更多详细信息。作为一个简短的介绍,“斜线命令”的结构是这样的:

/keywordToIdentifyCommand arg1 arg2 arg3

//In our app, we'll use the following command structure
/lm [add/remove], label1, label2, label3

命令语法结构

issuecomment 为标签添加删除逻辑创建的代码

解释:

最后的工作是这样的,在行动中:
演示命令工作的最终 gh 界面

提示:让任何人(就用户的权限级别而言)执行此类命令是不明智的。因此,将代码块封装在“if”检查中以检查权限级别是一个好主意。

if ((context.payload.issue.author_association === "OWNER") || 
    (context.payload.issue.author_association === "COLLABORATOR")) 
{
    // commands... code block here
  
}