مستندات n8n
74+ نود
🐙

گیت‌هاب

GitHub

مدیریت خودکار Issues، Pull Requests، Repositories و CI/CD در GitHub

ابزارهای توسعه
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود GitHub چیست؟

نود GitHub امکان اتصال و خودکارسازی فرآیندهای توسعه نرم‌افزار را در n8n فراهم می‌کند. GitHub بزرگ‌ترین پلتفرم Git-based hosting با بیش از ۱۰۰ میلیون توسعه‌دهنده است.

قابلیت‌های کلیدی:

  • مدیریت Issues: ایجاد، ویرایش، بستن، label و assign کردن issues
  • Pull Requests: ایجاد PR، مدیریت review، merge و close
  • Repository: ایجاد repo، مدیریت branches، دریافت اطلاعات
  • Releases: ایجاد release، آپلود assets، مدیریت نسخه‌ها
  • Files: خواندن، ایجاد و ویرایش فایل‌ها در repository
  • Users & Organizations: دریافت اطلاعات کاربران و سازمان‌ها
  • Webhooks: دریافت event‌ها از GitHub (push, PR, issue, etc.)

حالت‌های Trigger:

  • GitHub Trigger: دریافت webhook event‌ها (push, pull_request, issues, release, etc.)
  • Polling: بررسی دوره‌ای تغییرات بدون نیاز به webhook

محدودیت‌های API:

  • Authenticated: ۵,۰۰۰ درخواست در ساعت
  • GitHub App: ۱۵,۰۰۰ درخواست در ساعت (توصیه شده)
  • Search API: ۳۰ درخواست در دقیقه

احراز هویت

احراز هویت GitHub

روش ۱: Personal Access Token (ساده‌ترین)

  1. 1به Settings > Developer Settings > Personal Access Tokens بروید
  2. 2روی "Generate new token (classic)" کلیک کنید
  3. 3نام توکن و تاریخ انقضا را تنظیم کنید
  4. 4Scopes مورد نیاز را انتخاب کنید:
  • repo: دسترسی کامل به repositories
  • admin:repo_hook: مدیریت webhooks
  • read:org: خواندن اطلاعات organization
  • user: دسترسی به اطلاعات کاربر
  • workflow: مدیریت GitHub Actions
  1. 1Token را کپی کرده و در n8n وارد کنید

⚠️ نکته امنیتی: از Fine-grained tokens (جدیدتر) استفاده کنید که دسترسی محدودتری دارند.

روش ۲: GitHub App (توصیه شده برای Production)

  1. 1به Settings > Developer Settings > GitHub Apps بروید
  2. 2یک New GitHub App بسازید
  3. 3Permissions مورد نیاز را تنظیم کنید:
  • Repository permissions: Issues (Read & Write), Pull requests (Read & Write), Contents (Read & Write)
  • Organization permissions: Members (Read)
  1. 1App را روی repository یا organization نصب کنید
  2. 2App ID, Private Key و Installation ID را در n8n وارد کنید

مزایای GitHub App:

  • Rate limit بالاتر (۱۵,۰۰۰ req/hour)
  • دسترسی‌های granular
  • بدون وابستگی به اکانت شخصی
  • مناسب برای team workflows

روش ۳: OAuth2

  1. 1در Settings > Developer Settings > OAuth Apps یک app بسازید
  2. 2Client ID و Client Secret را در n8n وارد کنید
  3. 3Callback URL را تنظیم کنید
  4. 4کاربران با OAuth login می‌کنند

عملیات‌های موجود

1

issue-create

ایجاد issue جدید در repository

2

issue-update

ویرایش issue موجود

3

issue-get

دریافت اطلاعات یک issue خاص

4

issue-list

دریافت لیست issues با فیلتر

5

issue-comment

ارسال کامنت روی issue یا PR

6

issue-lock

قفل یا باز کردن issue برای جلوگیری از کامنت

7

pr-create

ایجاد pull request جدید

8

pr-merge

Merge کردن pull request

9

pr-review

ارسال review روی pull request

10

pr-list

دریافت لیست PRها

11

repo-get

دریافت اطلاعات repository

12

repo-list

دریافت لیست repositories کاربر یا سازمان

13

file-get

خواندن محتوای فایل از repository

14

file-create-update

ایجاد یا ویرایش فایل در repository

15

release-create

ایجاد release جدید

16

release-list

دریافت لیست releases

17

webhook-create

ایجاد webhook برای دریافت event‌ها

18

actions-trigger

اجرای GitHub Actions workflow

کاربردهای متداول

کاربردهای رایج

۱. اطلاع‌رسانی Issue جدید در تلگرام

وقتی issue جدیدی ایجاد شود، پیام در گروه تلگرام تیم ارسال شود.

code
GitHub Trigger (issues.opened) → Telegram (sendMessage)

۲. خودکارسازی Code Review

وقتی PR جدیدی ارسال شود، به reviewer‌ها assign شود و در Slack اطلاع‌رسانی شود.

code
GitHub Trigger (pull_request.opened) → GitHub (اضافه کردن reviewer) → Slack (ارسال پیام)

۳. مدیریت خودکار Labels

بر اساس محتوای issue، لیبل مناسب (bug, feature, question) خودکار اضافه شود.

code
GitHub Trigger (issues.opened) → IF (بررسی عنوان) → GitHub (اضافه کردن label)

۴. Release Changelog Generator

وقتی release جدید ایجاد شود، changelog از commit‌ها ساخته شده و در release notes اضافه شود.

code
GitHub Trigger (release.created) → GitHub (لیست commits) → Code (ساخت changelog) → GitHub (ویرایش release)

۵. CI/CD Pipeline Trigger

پس از merge شدن PR، خودکار GitHub Actions اجرا شود و نتیجه در Slack اعلام شود.

code
GitHub Trigger (pull_request.closed & merged) → GitHub (trigger workflow) → Wait → GitHub (بررسی status) → Slack

۶. Stale Issue Cleanup

هر هفته issues قدیمی بدون فعالیت پیدا شده و با کامنت هشدار و label "stale" مشخص شوند.

code
Schedule (هفتگی) → GitHub (لیست issues) → Filter (بدون update ۳۰ روز) → GitHub (اضافه label + کامنت)

۷. همگام‌سازی Issue با Project Board

وقتی issue ایجاد یا بسته شود، در Notion/Trello/Jira به‌روزرسانی شود.

code
GitHub Trigger (issues) → IF (opened/closed) → Notion (ایجاد/ویرایش page)

۸. Dependency Security Alerts

وقتی Dependabot alert ایجاد شود، تیم امنیت از طریق ایمیل و Slack مطلع شود.

code
GitHub Trigger (security_advisory) → Email (ارسال به تیم) → Slack (ارسال alert)

۹. خودکارسازی Documentation

وقتی فایل‌های code تغییر کنند، مستندات خودکار از کامنت‌ها generate شود.

code
GitHub Trigger (push) → GitHub (دریافت فایل‌های تغییر یافته) → Code (generate docs) → GitHub (commit docs)

۱۰. گزارش هفتگی فعالیت Repository

هر هفته گزارشی از تعداد commits، PRs، issues و contributors ساخته شود.

code
Schedule (یکشنبه) → GitHub (stats) → Code (ساخت گزارش) → Email/Telegram (ارسال گزارش)

نکات حرفه‌ای

نکات حرفه‌ای

۱. از GitHub App بجای Personal Token استفاده کنید

GitHub App دارای rate limit بالاتر (۱۵,۰۰۰ vs ۵,۰۰۰)، دسترسی granular و عدم وابستگی به اکانت شخصی است.

۲. Webhook Secret تنظیم کنید

همیشه یک secret قوی برای webhooks تنظیم کنید تا از دریافت fake events جلوگیری شود. n8n به صورت خودکار signature را verify می‌کند.

۳. از Pagination استفاده کنید

GitHub API حداکثر ۱۰۰ آیتم در هر صفحه برمی‌گرداند. برای دریافت همه نتایج از per_page=100 و page parameter استفاده کنید.

۴. Conditional Requests برای کاهش Rate Limit

از header If-None-Match (ETag) استفاده کنید. اگر داده تغییر نکرده باشد، GitHub پاسخ 304 برمی‌گرداند و از quota مصرف نمی‌شود.

۵. GraphQL API برای کوئری‌های پیچیده

برای دریافت چندین resource با یک درخواست، از GitHub GraphQL API (HTTP Request node) استفاده کنید. بسیار بهینه‌تر از REST API است.

۶. Status Checks با GitHub Actions

از repository_dispatch event برای trigger کردن GitHub Actions از n8n استفاده کنید. اینگونه CI/CD را خودکار مدیریت کنید.

۷. Template Repositories

برای ایجاد خودکار repos از template، از POST /repos/{template_owner}/{template_repo}/generate استفاده کنید.

۸. از Markdown در Issue/PR Body استفاده کنید

GitHub از Markdown و task lists پشتیبانی می‌کند. از - [ ] task برای checklist استفاده کنید.

۹. Branch Protection Rules

قبل از merge خودکار PR، مطمئن شوید branch protection rules را رعایت کرده‌اید (required reviews, status checks, etc.).

۱۰. از Labels برای Automation استفاده کنید

Labels عالی برای trigger کردن workflow‌ها هستند. مثلاً label "deploy" برای شروع deployment.

۱۱. Commit Signing

اگر repo نیاز به signed commits دارد، GitHub App به صورت خودکار commit‌ها را sign می‌کند.

۱۲. Rate Limit Monitoring

هدر‌های پاسخ GitHub شامل X-RateLimit-Limit، X-RateLimit-Remaining و X-RateLimit-Reset هستند. این‌ها را monitor کنید.

۱۳. Organization-wide Webhooks

بجای webhook روی هر repo، یک org-level webhook بسازید که همه event‌ها را دریافت کند.

۱۴. GitHub Projects v2

از GitHub Projects API (GraphQL) برای مدیریت project boards خودکار استفاده کنید.

۱۵. Backup Strategy

به صورت دوره‌ای از issues، PRs و wiki backup بگیرید. از GitHub API و n8n Schedule برای خودکارسازی backup استفاده کنید.

رفع مشکلات

رفع مشکلات رایج

❌ خطای 401 Unauthorized

علت: Token نامعتبر یا منقضی شده

راه‌حل

  • Token را بررسی و در صورت نیاز regenerate کنید
  • مطمئن شوید Token هنوز معتبر است (expiration date)
  • اگر از GitHub App استفاده می‌کنید، Installation token ممکن است منقضی شده باشد

❌ خطای 403 Forbidden

علت: دسترسی کافی ندارید

راه‌حل

  • Scopes توکن را بررسی کنید (repo, admin:repo_hook, etc.)
  • مطمئن شوید به repository مورد نظر دسترسی دارید
  • برای private repos، scope repo لازم است
  • Rate limit ممکن است تمام شده باشد (header X-RateLimit-Remaining را بررسی کنید)

❌ خطای 404 Not Found

علت: Repository، Issue یا Resource پیدا نشد

راه‌حل

  • نام owner و repo را exact بررسی کنید (case-sensitive نیست ولی باید صحیح باشد)
  • برای private repos مطمئن شوید Token دسترسی repo دارد
  • شماره issue/PR را بررسی کنید

❌ خطای 422 Validation Failed

علت: داده‌های ارسالی نامعتبر

راه‌حل

  • فیلدهای required را پر کنید
  • فرمت داده‌ها را بررسی کنید
  • برای file operations، SHA فایل موجود را ارسال کنید
  • Labels باید قبلاً در repo تعریف شده باشند

❌ خطای 409 Conflict

علت: تداخل در عملیات (مثلاً merge conflict)

راه‌حل

  • مطمئن شوید PR قابل merge است (conflict ندارد)
  • برای file update، آخرین SHA را استفاده کنید
  • Webhook URL duplicate نباشد

❌ خطای Rate Limit (403 with rate limit message)

علت: تعداد درخواست‌ها از حد مجاز عبور کرده

راه‌حل

  • از header X-RateLimit-Reset زمان reset را ببینید
  • از GitHub App (15K/hr) بجای Token (5K/hr) استفاده کنید
  • درخواست‌ها را با Wait node فاصله‌گذاری کنید
  • از conditional requests (ETag) استفاده کنید

❌ Webhook Event دریافت نمی‌شود

علت: تنظیمات Webhook نادرست

راه‌حل

  • URL را بررسی کنید (باید publicly accessible باشد)
  • Content type باید application/json باشد
  • events مورد نظر را فعال کنید
  • در Webhook settings > Recent Deliveries خطاها را بررسی کنید

❌ خطای "Resource not accessible by integration"

علت: GitHub App permissions ناکافی

راه‌حل

  • به Settings > GitHub Apps بروید و permissions را بررسی کنید
  • App را روی repository مورد نظر reinstall کنید
  • مطمئن شوید organization owner دسترسی app را approve کرده
اشتراک‌گذاری:

آیا این مستندات مفید بود؟