概要

Octokitを使ってGitHubの情報を確認する。

テスト用コードの実行

README.mdにあるコードを実行する。環境変数はあらかじめ指定しておいた。

import { Octokit, App } from "octokit";

const GITHUB_PERSONAL_KEY = process.env['GITHUB_PERSONAL_KEY'];
const octokit = new Octokit({ auth: GITHUB_PERSONAL_KEY });

const {
  data: { login },
} = await octokit.rest.users.getAuthenticated();
console.log("Hello, %s", login);
node main.mjs

Hello, octop162

GraphQLに基づいてissueを検索する

GraphQLをつかってissueを絞り込む。 確認ページを使ってクエリを調整した。 (GraphQLの知見がなさすぎたがChatGPTに効くと良い回答が返ってきたのでそれを元に調べた)。

ワークフロー上での環境整備を減らすためDenoを使う。

import { Octokit } from "https://esm.sh/octokit?dts";

const GITHUB_PERSONAL_KEY = Deno.env.get('PERSONAL_KEY');

const octokit = new Octokit({ auth: PERSONAL_KEY });

const owner_name = 'xxx';
const repo_name = 'xxx';
const query = '20240501';

const {search: {nodes}}= await octokit.graphql(`{
  search(query: "repo:${owner_name}/${repo_name} is:issue is:open ${query}", type: ISSUE, first: 20) {
    nodes {
      ... on Issue {
        number
        title
        url
      }
    }
  }
}`)

nodes.forEach(node => {
  console.log(`- [#${node.number}](${node.url}) - ${node.title}`);
});

Deno.exit(0);

実行した。

deno run --allow-net --allow-env main.js

- [#1](https://github.com/xxx/xxx/issues/1) - 20240501 test