本博客最初发表于RavSam博客.

自动化就是爱。我们都喜欢自动化重复的事情。有一种叫做 Probot 的东西。Probot是使用 Javascript 开发 GitHub 应用程序的最流行的框架之一。设置很容易,因为设置身份验证、注册 webhook、管理权限等大部分事情都由 Probot 自己处理。我们只需要编写代码来发送对不同事件的响应。

在本文中,我们将学习如何构建无服务器机器人并将其部署到 Netlify Functions。使用 Netlify Functions 的优势在于它是 free 每月最多可处理 125,000 个请求,这对于小型初创公司或组织来说绰绰有余。

先决条件

我们可以按照指南了解如何设置 Probot。

编写应用程序逻辑

设置 Probot 后,我们需要对目录结构进行一些更改,以将其部署到 Netlify Functions。

让我们创建一个src目录并将我们的应用程序逻辑放在一个新文件app.js中:

/**
 * This is the main entrypoint to your Probot app
 * @param {import('probot').Probot} app
 */

module.exports = (app) => {
  app.log.info('App has loaded');

  app.on('issues.opened', async (context) => {
    context.octokit.issues.createComment(
      context.issue({
        body: 'Thanks for opening this issue!',
      })
    );
  });
};

上面的代码真的很简单。每当打开一个新问题时,它都会创建一个问题评论,感谢问题作者。

Netlify 函数是 AWS Lambda 函数,但它们到 AWS 的部署由 Netlify 处理。为了在 Netlify 上部署我们的 Probot,我们可以使用适用于 Probot 的 AWS Lambda 适配器。

npm install @probot/adapter-aws-lambda-serverless --save

接下来我们需要做的是创建一个functions目录,Netlify 将使用它来部署我们的无服务器功能。functions目录中的每个 JS 文件都部署为可以通过<domain>/.netlify/functions/<function_name>访问的单独函数。

functions目录下,我们创建一个index.js文件,添加如下代码:

const { createLambdaFunction, createProbot } = require('@probot/adapter-aws-lambda-serverless');
const app = require('../src/app');

module.exports.handler = createLambdaFunction(app, {
  probot: createProbot(),
});

我们的代码终于完成了,下一步是将我们的应用程序部署到 Netlify。

部署在 Netlify 函数上

在继续进行部署设置之前,我们需要解决一些问题。我们需要在项目的根目录下创建一个配置文件netlify.toml,并告诉 Netlify 在部署我们的机器人时要考虑的一些重要事项。

让我们在netlify.toml中添加如下内容:

[build]
command = "npm install --production"
functions = "./functions"

我们告诉 Netlify 在部署functions目录中存在的函数之前运行npm install

要在 Netlify 上部署,我们可以使用Netlify Dev。为此,我们需要安装netlify-cli:

npm install netlify-cli -g

现在让我们通过执行以下操作登录到我们的 Netlify 帐户:

netlify login

登录后,让我们将当前目录连接到 Netlify Functions。我们可以通过以下方式连接到现有的或创建新的:

netlify init

连接我们的站点后,我们可以在本地构建站点并将其部署到 Netlify,方法是:

netlify build
netlify deploy --prod

我们还可以将我们的 Github 存储库连接到我们的 Netlify 项目,或者使用 Github Actions 将我们的机器人部署到 Netlify。 {.alert 警报信息}

更新 Webhook URL

部署 Probot 后,我们需要更新 Webhook URL 以告诉 Github 将事件有效负载发送到何处。我们可以访问zwz100036 https://github.com/settings/apps/<app-name> zwz100037 zwz100035并使用我们的 Netlify 网站 URL 更新 Webhook URL。

结果

让我们通过在我们安装了 Github 应用程序的存储库上创建一个问题来测试我们的机器人,看看我们的机器人是否响应。

欢迎Github Bot发表评论欢迎Github Bot发表评论

惊人的!我们可以看到我们的机器人用我们之前写的消息欢迎我们。在 Github 上有很多事情可以自动化,比如自动将用户分配给问题,自动将审阅者分配给拉取请求,自动合并由 dependabot 警报 创建的拉取请求等等。

感谢阅读💜


如果您喜欢我的博客,请关注我以获取更多此类信息。

我发布了月刊,其中分享了我的个人故事、我正在做的事情、科技界正在发生的事情,以及我在网上冲浪时看到的一些有趣的与开发相关的帖子。

通过Twitter•LinkedIn•Github或给我发送电子邮件。

—Ravgeet,全栈开发人员和技术内容作家

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐