📌  相关文章
📜  如何使用 ocktokit 在拉取请求中创建评论?

📅  最后修改于: 2022-05-13 01:56:23.140000             🧑  作者: Mango

如何使用 ocktokit 在拉取请求中创建评论?

简介: Octokit 客户端可用于向 GitHub 的 REST API 发送请求,向 GitHub 的 GraphQL API 发送查询。 octokit 包集成了三个主要的 Octokit 库:

  1. API 客户端(REST API 请求、GraphQL API 查询、身份验证)
  2. 应用客户端(GitHub 应用和安装、Webhooks、OAuth)
  3. 操作客户端(单个存储库的预认证 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 时,它没有所有可用的依赖项。将其打包在一个文件中允许我们的脚本只使用那个文件!

输出: