首頁 >web前端 >js教程 >終極指南:使用 GitHub API 建立完整的問題追蹤器

終極指南:使用 GitHub API 建立完整的問題追蹤器

Barbara Streisand
Barbara Streisand原創
2024-10-31 10:33:531068瀏覽

Ultimate Guide: Build a Complete Issue Tracker with the GitHub API

本指南將幫助您建立一個與 GitHub API 整合的自動化、高效的問題追蹤器。您將逐步學習如何設定問題建立、分配、通知等!


1. 第 1 步:取得您的 GitHub 個人存取權杖 (PAT)

要存取私人儲存庫或避免速率限制,您需要一個個人存取權杖(PAT)

如何產生令牌:

  1. 前往設定>開發者設定>您的 GitHub 帳戶中的個人存取權令牌
  2. 點選產生新令牌
  3. 選擇權限,例如 repo(用於儲存庫存取)。
  4. 保存令牌 - 您將需要它來在程式碼中授權。

2. 第 2 步:建立基本問題追蹤器

此程式碼可讓您透過 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');

工作原理:

  • 將「YourGitHubUsername」和「my-repo」替換為您的使用者名稱和儲存庫名稱。
  • 此函數將新問題發佈到儲存庫。
  • 檢查控制台日誌中的問題連結。

3. 第 3 步:自動分配問題

確保每個問題都會自動分配給團隊成員。此步驟可以節省時間,確保問責制。

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');

它的作用:

  • 建立問題後使用此功能將其指派給團隊成員。
  • 將 42 替換為您要指派的問題編號。

4. 第 4 步:取得未決問題以進行更好的管理

追蹤所有未解決的問題對於有效管理專案至關重要。使用此程式碼列出所有未解決的問題。

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');

有什麼幫助:

  • 取得儲存庫中的所有未決問題
  • 您可以在儀表板中顯示它們或向開發人員發送通知。

5. 第 5 步:監控過時問題並發送警報

針對長時間未解決的問題建立警報。設定 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');

它的作用:

  • 辨識早於指定天數的陳舊問題
  • 將此功能與 Slack、Discord 或電子郵件警報結合使用,以通知團隊成員。

6. 第 6 步:根據關鍵字自動發布問題標籤

使用簡單的關鍵字來配對根據內容自動標記問題。這可以幫助立即對問題進行分類。

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');

用法:

  • 自動為相關問題加上標籤,例如「錯誤」或「功能請求」。
  • 將其與文字分析結合,以偵測問題標題或描述中的關鍵字(例如「錯誤」、「請求」)。

7. 第 7 步:建立儀表板來顯示問題

使用 JavaScript 和 GitHub API 建立一個儀表板,以在網頁上顯示所有未解決的問題。您可以視覺化問題狀態、分配和標籤。

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');

這是如何運作的:

  • 此程式碼在基於網路的儀表板中動態顯示問題。
  • 使用 CSS 設計樣式,使其具有視覺吸引力。

8. 第 8 步:部署您的問題追蹤器

部署選項:

  1. Vercel/Netlify:非常適合部署靜態儀表板。
  2. Heroku:非常適合需要定期警報的後端服務。
  3. GitHub Actions:直接在 GitHub 中自動執行任務(例如,在提交時建立問題)。

9. 結論

透過使用 GitHub API 建置問題追蹤器,您可以自動化專案管理、提高生產力並確保責任。無論您是管理小型專案還是大型開源儲存庫,這些自動化工具都可以節省時間並使您的團隊步入正軌。

以上是終極指南:使用 GitHub API 建立完整的問題追蹤器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn