如何使用Octokit在pull request中创建评论
介绍: Octokit客户端可以用于向GitHub的REST API发送请求和向GitHub的GraphQL API发送查询。octokit包集成了三个主要的Octokit库:
- API客户端(REST API请求,GraphQL API查询,身份验证)
- 应用程序客户端(GitHub应用程序和安装,Webhook,OAuth)
- 操作客户端(预身份验证的单个存储库的API客户端)。
方法: 我们将使用Github的API Client octokit/rest.js来创建一个脚本,通过该脚本我们将在打开pull request时发表评论。
以下是上述方法的逐步实现。
步骤1:初始化一个node项目
首先创建一个名为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’ 。
步骤3:创建应用程序运行的基础文件
首先安装两个依赖项以使用 octokit 和 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的客户端octokit创建评论。
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"
...,
},
这设置了一个新的脚本,所以每当我们运行构建命令时,它会告诉ncc构建我们的Action脚本,并将其输出到dist文件夹中。
我们可以试着运行它:
npm run build
一旦完成,您现在应该在项目的根目录下看到一个名为dist的文件夹,其中包含一个名为index.js的文件。如果您打开它,您可能会注意到一堆奇怪的代码。ncc使用webpack编译我们的脚本,以便它可以作为模块使用,从而使不同的进程可以理解它。我们编译脚本的原因是,当GitHub尝试从另一个存储库使用我们的Action时,它没有可用的所有依赖项。将它打包成一个单独的文件使我们的脚本只需使用这一个文件即可工作!
输出: