在 Netlify 函数上部署无服务器 Probot/Github 应用程序
本博客最初发表于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 上有很多事情可以自动化,比如自动将用户分配给问题,自动将审阅者分配给拉取请求,自动合并由 dependabot 警报 创建的拉取请求等等。
感谢阅读💜
如果您喜欢我的博客,请关注我以获取更多此类信息。
我发布了月刊,其中分享了我的个人故事、我正在做的事情、科技界正在发生的事情,以及我在网上冲浪时看到的一些有趣的与开发相关的帖子。
通过Twitter•LinkedIn•Github或给我发送电子邮件。
—Ravgeet,全栈开发人员和技术内容作家
更多推荐



所有评论(0)