如何使用 ocktokit 在拉取请求中创建评论?
简介: Octokit 客户端可用于向 GitHub 的 REST API 发送请求,向 GitHub 的 GraphQL API 发送查询。 octokit 包集成了三个主要的 Octokit 库:
- API 客户端(REST API 请求、GraphQL API 查询、身份验证)
- 应用客户端(GitHub 应用和安装、Webhooks、OAuth)
- 操作客户端(单个存储库的预认证 API 客户端)。
方法:我们将使用 Github 的 API 客户端 octokit/rest.js 创建一个脚本,通过它我们将在拉取请求打开后立即对其进行评论。
以下是上述方法的分步实施。
步骤 1:初始化节点项目
首先创建一个名为GFG 的根文件夹:
mkdir GFG
导航到 GFG 文件夹:
cd GFG
将此文件夹初始化为节点存储库:
npm init
在此之后,您将在项目的根目录中找到一个 package.json 文件。
第 2 步:创建一个新的 Github 操作
使用以下内容创建一个名为 action.yml 的新文件:
name: 'GeeksForGeeks'
description: 'Say "GeeksForGeeks" to new pull requests'
author: '[GFG]'
inputs:
GITHUB_TOKEN:
description: 'GitHub token'
required: true
runs:
using: 'node12'
main: 'dist/index.js'
上面声明了一个名为GeeksForGeeks的操作,它采用一个输入GITHUB_TOKEN ,它应该在node12版本中运行,并且主入口点设置为'dist/index.js' 。
Step3:创建应用程序运行的基础文件
首先安装两个依赖项以使用 ocktokit 和 pull request 的上下文负载。
npm install @actions/core @actions/github
创建一个 src 目录。然后在 src 目录下创建一个 action.js 文件,内容如下:
Javascript
const core = require('@actions/core');
const github = require('@actions/github');
const { context } = require('@actions/github')
const GITHUB_TOKEN = core.getInput('GITHUB_TOKEN');
const octokit = github.getOctokit(GITHUB_TOKEN);
const { pull_request } = context.payload;
async function run() {
await octokit.rest.issues.createComment({
...context.repo,
issue_number: pull_request.number,
body: 'Thank you for submitting a pull request! We will
try to review this as soon as we can.'
});
}
run();
我们在上面做的是:
- 安装这两个依赖项后,它们将被导入到文件中。
const core = require('@actions/core');
const github = require('@actions/github');
- 在需要访问 github api 的每个函数中,使用以下命令创建 octokit。
const GITHUB_TOKEN = core.getInput('GITHUB_TOKEN');
const octokit = github.getOctokit(GITHUB_TOKEN);
- 现在我们有了 octokit 实例,我们现在可以使用 Github API 的客户端 ocktokit 创建评论。
octokit.rest.issues.createComment({
owner,
repo,
issue_number,
body,
});
第 4 步:使用 Vercel 的 ncc 构建 src/action.js
虽然我们还没有在我们的 src/action.js 中做任何需要节点以外的东西来运行的东西,但我们将设置我们的 Action 来构建和编译到一个 dist 文件夹中,这就是我们的 Action 将用来实际运行代码。
如果你还记得,我们将 action.yml 中的 main 属性设置为 dist/index.js!
首先,我们可以先从 Vercel 安装 ncc,它将获取我们的脚本和依赖项并将它们打包到一个文件中。
在您的终端中,使用以下命令安装文件:
npm install @vercel/ncc
接下来,在我们的 package.json 文件中,在 scripts 对象下,让我们添加一个新脚本:
"scripts": {
"build": "ncc build src/action.js -o dist"
...,
},
这会设置一个新脚本,因此每当我们运行 build 命令时,它都会告诉 ncc 构建我们的 Action 脚本并将其输出到 dist 文件夹中。
我们可以通过运行来试试:
npm run build
完成后,您现在应该会在项目的根目录中看到一个 dist 文件夹,其中包含一个 index.js 文件。如果你往里面看,你可能会注意到一堆看起来很奇怪的代码。 ncc 使用 webpack 来编译我们的脚本,这样它就可以作为一个模块使用,允许不同的进程来理解它。我们编译脚本的原因是当 GitHub 尝试使用来自另一个存储库的 Action 时,它没有所有可用的依赖项。将其打包在一个文件中允许我们的脚本只使用那个文件!
输出: