GitHub کنیکٹر
ڈیولپر انگیجمنٹ ٹریکنگ، ریلیز اطلاع ورک فلوز، اور کمیونٹی سرگرمی کی نگرانی کے لیے اپنی GitHub ریپوزٹریز کو Tajo کے ذریعے Brevo سے منسلک کریں۔
جائزہ
| خاصیت | قدر |
|---|---|
| پلیٹ فارم | GitHub |
| زمرہ | حسب ضرورت |
| سیٹ اپ کی پیچیدگی | معتدل |
| آفیشل انٹیگریشن | نہیں |
| سنک شدہ ڈیٹا | ایونٹس، صارفین، ریپوزٹریز |
| API قسم | REST API، GraphQL API |
| توثیق | GitHub App / Personal Access Token / OAuth 2.0 |
| بنیادی URL | https://api.github.com |
| API ورژن | 2022-11-28 (header پر مبنی ورژننگ) |
خصوصیات
- Issue اور PR ٹریکنگ - مسئلہ اور pull request ایونٹس کو Brevo رابطہ ٹائم لائنز سے سنک کریں
- ریلیز اطلاعات - نئی ریپوزٹری ریلیز پر Brevo مہمات کو متحرک کریں
- Contributor سنک - کمیونٹی انگیجمنٹ کے لیے GitHub contributors کو Brevo رابطوں سے میپ کریں
- Star اور fork ٹریکنگ - ریپوزٹری مقبولیت میٹرکس کی نگرانی کریں
- ویب ہک ایونٹ فارورڈنگ - GitHub ایونٹس کو Brevo آٹومیشنز کو آگے بھیجیں
- ریپوزٹری کیٹلاگ - ریپوزٹری میٹا ڈیٹا کو Brevo catalog آئٹمز کے طور پر سنک کریں
ضروریات
شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:
- ہدف ریپوزٹریز تک رسائی کے ساتھ GitHub اکاؤنٹ
- GitHub App یا Personal Access Token (fine-grained تجویز کردہ)
- ویب ہک کنفیگریشن کے لیے ریپوزٹریز تک ایڈمن رسائی
- API رسائی کے ساتھ Brevo اکاؤنٹ
- فعال سبسکرپشن کے ساتھ Tajo اکاؤنٹ
توثیق
GitHub متعدد توثیقی طریقوں کی حمایت کرتا ہے۔ Tajo تنظیمی سطح کی رسائی کے لیے GitHub Apps استعمال کرنے کی سفارش کرتا ہے۔
آپشن 1: GitHub App (تجویز کردہ)
- Settings > Developer settings > GitHub Apps پر جائیں
- New GitHub App پر کلک کریں
- ان اجازتوں کے ساتھ ایپ کنفیگر کریں:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star Forkآپشن 2: Fine-Grained Personal Access Token
- Settings > Developer settings > Personal access tokens > Fine-grained tokens پر جائیں
- Generate new token پر کلک کریں
- ہدف ریپوزٹریز منتخب کریں
- یہ اجازتیں دیں:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyٹوکن سیکیورٹی
Fine-grained ٹوکنز کی میعاد ختم ہونے کی تاریخیں ہوتی ہیں۔ میعاد ختم ہونے سے پہلے ٹوکن گردش سیٹ اپ کریں۔ GitHub App انسٹالیشن ٹوکنز خود بخود ریفریش ہوتے ہیں اور پروڈکشن استعمال کے لیے ترجیح دیے جاتے ہیں۔
Tajo سے منسلک کرنا
# GitHub App کا استعمال کرتے ہوئےtajo connectors install github \ --app-id $GITHUB_APP_ID \ --private-key-path ./github-app-key.pem \ --installation-id $GITHUB_INSTALLATION_ID
# Personal Access Token کا استعمال کرتے ہوئےtajo connectors install github \ --token $GITHUB_TOKENکنفیگریشن
بنیادی سیٹ اپ
connectors: github: enabled: true auth_type: "github_app" # or "token"
repositories: - owner/repo-1 - owner/repo-2
sync: issues: true pull_requests: true releases: true contributors: true stars: true
lists: contributors: 20 stargazers: 21فیلڈ میپنگ
GitHub صارف ڈیٹا کو Brevo رابطہ خصوصیات سے میپ کریں:
field_mapping: # Standard fields login: GITHUB_USERNAME email: email name: FIRSTNAME
# Developer metrics contributions: GITHUB_CONTRIBUTIONS repositories_count: GITHUB_REPOS followers: GITHUB_FOLLOWERS created_at: GITHUB_JOINED
# Custom attributes company: COMPANY location: LOCATION bio: GITHUB_BIOAPI اینڈ پوائنٹس
Tajo مندرجہ ذیل GitHub REST API اینڈ پوائنٹس کے ساتھ انٹیگریٹ ہوتا ہے:
| اینڈ پوائنٹ | طریقہ | مقصد |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | ریپوزٹری کے مسائل کی فہرست |
/repos/{owner}/{repo}/pulls | GET | Pull requests کی فہرست |
/repos/{owner}/{repo}/releases | GET | ریلیز کی فہرست |
/repos/{owner}/{repo}/contributors | GET | Contributors کی فہرست |
/repos/{owner}/{repo}/stargazers | GET | Stargazers کی فہرست |
/repos/{owner}/{repo}/forks | GET | Forks کی فہرست |
/repos/{owner}/{repo}/events | GET | ریپوزٹری ایونٹس کی فہرست |
/users/{username} | GET | صارف پروفائل حاصل کریں |
/orgs/{org}/members | GET | تنظیمی ممبران کی فہرست |
/repos/{owner}/{repo}/hooks | POST | ویب ہک بنائیں |
کوڈ مثالیں
کنیکٹر کو شروع کریں
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('github', { appId: process.env.GITHUB_APP_ID, privateKey: process.env.GITHUB_PRIVATE_KEY, installationId: process.env.GITHUB_INSTALLATION_ID});Contributors کو Brevo سے سنک کریں
await tajo.connectors.sync('github', { type: 'full', resources: ['contributors'], repositories: ['owner/repo-1', 'owner/repo-2']});
const status = await tajo.connectors.status('github');console.log(status);// {// connected: true,// lastSync: '2024-03-15T11:00:00Z',// contributorsCount: 245,// issuesTracked: 1890,// releasesTracked: 34// }ویب ہک ایونٹس کو ہینڈل کریں
app.post('/webhooks/github', async (req, res) => { const signature = req.get('X-Hub-Signature-256'); const event = req.get('X-GitHub-Event');
// ویب ہک سگنیچر کی تصدیق کریں if (!verifyGitHubSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('github', { event, payload: req.body });
res.status(200).send('OK');});ریلیز مہم کو متحرک کریں
// نئی ریلیز کو سنیں اور Brevo مہم کو متحرک کریںtajo.connectors.on('github', 'release.published', async (event) => { await tajo.campaigns.trigger('release-announcement', { listId: 21, params: { version: event.release.tag_name, release_notes: event.release.body, download_url: event.release.html_url } });});ریٹ کی حدود
GitHub توثیق کے طریقے کی بنیاد پر ریٹ کی حدود نافذ کرتا ہے:
| توثیق | بنیادی ریٹ کی حد | Search API |
|---|---|---|
| غیر توثیق شدہ | 60 درخواستیں/گھنٹہ | 10 درخواستیں/منٹ |
| Personal Access Token | 5,000 درخواستیں/گھنٹہ | 30 درخواستیں/منٹ |
| GitHub App (installation) | 5,000 درخواستیں/گھنٹہ | 30 درخواستیں/منٹ |
| GitHub App (user-to-server) | 5,000 درخواستیں/گھنٹہ | 30 درخواستیں/منٹ |
مشروط درخواستیں
Tajo API استعمال کو کم کرنے کے لیے مشروط درخواستیں (If-None-Match / If-Modified-Since ہیڈرز) استعمال کرتا ہے۔ 304 Not Modified والے ریسپانسز ریٹ کی حدود کے خلاف شمار نہیں ہوتے۔
اضافی حدود:
- ثانوی ریٹ کی حدود: 100 سے زیادہ ہم وقت درخواستیں نہیں۔ REST API اینڈ پوائنٹس کے لیے 900 پوائنٹس فی منٹ سے زیادہ نہیں۔
- GraphQL: 5,000 پوائنٹس فی گھنٹہ (query cost پیچیدگی کے لحاظ سے مختلف ہوتی ہے)۔
مسائل کا سراغ
عام مسائل
| مسئلہ | وجہ | حل |
|---|---|---|
| 401 Unauthorized | میعاد ختم شدہ ٹوکن یا غلط اسناد | ٹوکن دوبارہ تخلیق کریں یا GitHub App دوبارہ انسٹال کریں |
| 403 Forbidden | ناکافی اجازتیں | ٹوکن اسکوپس یا App اجازتیں چیک کریں |
| 404 Not Found | بغیر رسائی کے پرائیویٹ ریپو | ٹوکن یا App کو ریپوزٹری تک رسائی دیں |
| ریٹ کی حد سے تجاوز | بہت زیادہ API کالز | مشروط درخواستیں فعال کریں اور سنک کی تعدد کم کریں |
| ویب ہکس موصول نہیں ہوئے | غلط URL یا فائر وال | تصدیق کریں کہ ویب ہک URL عوامی طور پر قابل رسائی ہے |
ڈیبگ موڈ
connectors: github: debug: true log_level: verbose log_webhooks: trueکنکشن ٹیسٹ کریں
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)بہترین طریقے
- PATs پر GitHub Apps استعمال کریں - GitHub Apps granular اجازتیں اور خود بخود ریفریش ہونے والے ٹوکنز فراہم کرتے ہیں
- ویب ہک سیکریٹس فعال کریں - ہمیشہ HMAC-SHA256 کے ساتھ ویب ہک سگنیچرز کی تصدیق کریں
- مشروط درخواستیں استعمال کریں - ریٹ کی حد کے کوٹے کو ضائع کرنے سے بچنے کے لیے ETags کا فائدہ اٹھائیں
- بڑے ریسپانسز کو پیجینیٹ کریں - GitHub فی صفحہ زیادہ سے زیادہ 100 آئٹمز واپس کرتا ہے؛
Linkہیڈرز کے ساتھ اتریٹ کریں - کم سرگرمی کے دوران سنک کریں - پیک ڈیولپمنٹ گھنٹوں کے باہر مکمل سنکس شیڈول کریں
- ریٹ کی حد کے ہیڈرز کی نگرانی کریں - فعال طور پر تھروٹل کرنے کے لیے
X-RateLimit-Remainingچیک کریں
سیکیورٹی
- GitHub App Authentication - قلیل مدتی installation ٹوکنز کے ساتھ RSA key پر مبنی JWT
- ویب ہک سگنیچرز - تمام ویب ہک پے لوڈز پر HMAC-SHA256 سگنیچر کی تصدیق
- Fine-Grained ٹوکنز - مخصوص ریپوزٹریز اور اجازتوں تک محدود
- صرف HTTPS - تمام API مواصلات TLS 1.2+ کے ذریعے خفیہ کردہ
- خفیہ کردہ اسٹوریج - Tajo میں نجی کیز اور ٹوکنز آرام کی حالت میں خفیہ کردہ
- ٹوکن کی میعاد - Fine-grained ٹوکنز خود بخود ختم ہو جاتے ہیں؛ گردش الرٹس سیٹ کریں