📜  GitHub App可添加或删除问题标签

📅  最后修改于: 2021-05-20 07:50:43             🧑  作者: Mango

Github应用程序(或Github机器人)是Github上的一流演员,用于从存储库维护人员的手中卸下多余的工作。 Github上的一流演员表示,它具有执行维护者想要的功能的能力,并且可以在事先获得适当权限的情况下对机器人进行编程。该机器人通过接收在Github上触发的事件的webhooks(评论,要求该机器人删除受让人,添加标签,将该问题移至另一个回购),然后触发适当的代码(该代码是事件样式的,稍后会变得明显)来工作。在文章中)对此做出回应。触发的代码使机器人执行操作。可以外包给机器人的一项工作是管理问题的标签。在本文中,我们将使用Probot来构建Github应用,以添加或删除问题标签。
使用的框架:Probot
我们还将使用probot-commands npm模块输入命令。

GitHub App的初始设置

要设置github应用,可以查看probot的文档。由于设置不是本文的重点,因此我们将在Glitch上重新混合Probot应用程序。可以在此处找到此设置的链接。
小故障混音中的README.md对于设置应用程序提供了出色的指南。

要检查正确的应用程序设置,请通过在存储库中发出一个问题(假定应用程序已安装在存储库中)来运行应用程序安装随附的默认代码。
indexjs-first-code-snippet

输出:机器人(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
  
}