ホームページ > 記事 > ウェブフロントエンド > 究極のガイド: GitHub API を使用して完全な問題追跡ツールを構築する
このガイドは、GitHub API と統合された自動化された効率的な 問題トラッカー を作成するのに役立ちます。課題の作成、割り当て、通知などを設定する方法をステップバイステップで学習します。
プライベート リポジトリにアクセスしたり、レート制限を回避するには、パーソナル アクセス トークン (PAT) が必要です。
トークンの生成方法:
このコードを使用すると、GitHub API 経由で任意のリポジトリに問題を作成できます。
async function createIssue(owner, repo, title, body, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues`; const response = await fetch(url, { method: 'POST', headers: { Authorization: `token ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ title, body }), }); const issue = await response.json(); console.log(`Issue Created: ${issue.html_url}`); } createIssue('YourGitHubUsername', 'my-repo', 'Bug Report', 'Details about the bug.', 'your_token');
? 仕組み:
すべての問題がチーム メンバーに自動的に割り当てられるようにします。この手順により時間を節約し、説明責任を確保できます。
async function assignIssue(owner, repo, issueNumber, assignees, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}`; const response = await fetch(url, { method: 'PATCH', headers: { Authorization: `token ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ assignees }), }); const updatedIssue = await response.json(); console.log(`Issue Assigned: ${updatedIssue.html_url}`); } assignIssue('YourGitHubUsername', 'my-repo', 42, ['assignee_username'], 'your_token');
? これが行うこと:
すべての未解決の問題を追跡することは、プロジェクトを効率的に管理するために不可欠です。このコードを使用して、すべての未解決の問題をリストします。
async function getOpenIssues(owner, repo, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues?state=open`; const response = await fetch(url, { headers: { Authorization: `token ${token}` }, }); const issues = await response.json(); console.log(`Total Open Issues: ${issues.length}`); issues.forEach(issue => console.log(`#${issue.number}: ${issue.title}`)); } getOpenIssues('YourGitHubUsername', 'my-repo', 'your_token');
? それがどのように役立つか:
長期間未解決のままになっている問題についてのアラートを作成します。 cron ジョブを設定して、このコードを定期的に (毎日など) 実行し、Slack または電子メールで通知を送信します。
async function checkStaleIssues(owner, repo, daysOld, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues?state=open`; const response = await fetch(url, { headers: { Authorization: `token ${token}` }, }); const issues = await response.json(); const today = new Date(); issues.forEach(issue => { const createdDate = new Date(issue.created_at); const ageInDays = (today - createdDate) / (1000 * 60 * 60 * 24); if (ageInDays > daysOld) { console.log(`Stale Issue: #${issue.number} - ${issue.title}`); // Send alert logic here (e.g., Slack or email notification) } }); } checkStaleIssues('YourGitHubUsername', 'my-repo', 7, 'your_token');
? これが行うこと:
単純なキーワード一致を使用して、内容に基づいて問題に自動的にラベルを付けます。これにより、問題を即座に分類することができます。
async function createIssue(owner, repo, title, body, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues`; const response = await fetch(url, { method: 'POST', headers: { Authorization: `token ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ title, body }), }); const issue = await response.json(); console.log(`Issue Created: ${issue.html_url}`); } createIssue('YourGitHubUsername', 'my-repo', 'Bug Report', 'Details about the bug.', 'your_token');
? 使用法:
JavaScript と GitHub API を使用して ダッシュボード を作成し、未解決の問題をすべて Web ページに表示します。課題のステータス、割り当て、ラベルを視覚化できます。
async function assignIssue(owner, repo, issueNumber, assignees, token) { const url = `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}`; const response = await fetch(url, { method: 'PATCH', headers: { Authorization: `token ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ assignees }), }); const updatedIssue = await response.json(); console.log(`Issue Assigned: ${updatedIssue.html_url}`); } assignIssue('YourGitHubUsername', 'my-repo', 42, ['assignee_username'], 'your_token');
? 仕組み:
GitHub API を使用して 問題トラッカー を構築することで、プロジェクト管理を自動化し、生産性を向上させ、説明責任を確保します。小規模なプロジェクトを管理している場合でも、大規模なオープンソース リポジトリを管理している場合でも、これらの自動化ツールを使用すると時間を節約し、チームの計画を順調に進めることができます。
以上が究極のガイド: GitHub API を使用して完全な問題追跡ツールを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。