GitHub کنیکٹر

ڈیولپر انگیجمنٹ ٹریکنگ، ریلیز اطلاع ورک فلوز، اور کمیونٹی سرگرمی کی نگرانی کے لیے اپنی GitHub ریپوزٹریز کو Tajo کے ذریعے Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمGitHub
زمرہحسب ضرورت
سیٹ اپ کی پیچیدگیمعتدل
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاایونٹس، صارفین، ریپوزٹریز
API قسمREST API، GraphQL API
توثیقGitHub App / Personal Access Token / OAuth 2.0
بنیادی URLhttps://api.github.com
API ورژن2022-11-28 (header پر مبنی ورژننگ)

خصوصیات

  • Issue اور PR ٹریکنگ - مسئلہ اور pull request ایونٹس کو Brevo رابطہ ٹائم لائنز سے سنک کریں
  • ریلیز اطلاعات - نئی ریپوزٹری ریلیز پر Brevo مہمات کو متحرک کریں
  • Contributor سنک - کمیونٹی انگیجمنٹ کے لیے GitHub contributors کو Brevo رابطوں سے میپ کریں
  • Star اور fork ٹریکنگ - ریپوزٹری مقبولیت میٹرکس کی نگرانی کریں
  • ویب ہک ایونٹ فارورڈنگ - GitHub ایونٹس کو Brevo آٹومیشنز کو آگے بھیجیں
  • ریپوزٹری کیٹلاگ - ریپوزٹری میٹا ڈیٹا کو Brevo catalog آئٹمز کے طور پر سنک کریں

ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. ہدف ریپوزٹریز تک رسائی کے ساتھ GitHub اکاؤنٹ
  2. GitHub App یا Personal Access Token (fine-grained تجویز کردہ)
  3. ویب ہک کنفیگریشن کے لیے ریپوزٹریز تک ایڈمن رسائی
  4. API رسائی کے ساتھ Brevo اکاؤنٹ
  5. فعال سبسکرپشن کے ساتھ Tajo اکاؤنٹ

توثیق

GitHub متعدد توثیقی طریقوں کی حمایت کرتا ہے۔ Tajo تنظیمی سطح کی رسائی کے لیے GitHub Apps استعمال کرنے کی سفارش کرتا ہے۔

آپشن 1: GitHub App (تجویز کردہ)

  1. Settings > Developer settings > GitHub Apps پر جائیں
  2. New GitHub App پر کلک کریں
  3. ان اجازتوں کے ساتھ ایپ کنفیگر کریں:
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

  1. Settings > Developer settings > Personal access tokens > Fine-grained tokens پر جائیں
  2. Generate new token پر کلک کریں
  3. ہدف ریپوزٹریز منتخب کریں
  4. یہ اجازتیں دیں:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

ٹوکن سیکیورٹی

Fine-grained ٹوکنز کی میعاد ختم ہونے کی تاریخیں ہوتی ہیں۔ میعاد ختم ہونے سے پہلے ٹوکن گردش سیٹ اپ کریں۔ GitHub App انسٹالیشن ٹوکنز خود بخود ریفریش ہوتے ہیں اور پروڈکشن استعمال کے لیے ترجیح دیے جاتے ہیں۔

Tajo سے منسلک کرنا

Terminal window
# 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_BIO

API اینڈ پوائنٹس

Tajo مندرجہ ذیل GitHub REST API اینڈ پوائنٹس کے ساتھ انٹیگریٹ ہوتا ہے:

اینڈ پوائنٹطریقہمقصد
/repos/{owner}/{repo}/issuesGETریپوزٹری کے مسائل کی فہرست
/repos/{owner}/{repo}/pullsGETPull requests کی فہرست
/repos/{owner}/{repo}/releasesGETریلیز کی فہرست
/repos/{owner}/{repo}/contributorsGETContributors کی فہرست
/repos/{owner}/{repo}/stargazersGETStargazers کی فہرست
/repos/{owner}/{repo}/forksGETForks کی فہرست
/repos/{owner}/{repo}/eventsGETریپوزٹری ایونٹس کی فہرست
/users/{username}GETصارف پروفائل حاصل کریں
/orgs/{org}/membersGETتنظیمی ممبران کی فہرست
/repos/{owner}/{repo}/hooksPOSTویب ہک بنائیں

کوڈ مثالیں

کنیکٹر کو شروع کریں

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 Token5,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

کنکشن ٹیسٹ کریں

Terminal window
tajo connectors test github
# ✓ API authentication successful
# ✓ Repository access verified
# ✓ Issue data readable
# ✓ Webhook delivery active
# ✓ Rate limit healthy (4,850/5,000 remaining)

بہترین طریقے

  1. PATs پر GitHub Apps استعمال کریں - GitHub Apps granular اجازتیں اور خود بخود ریفریش ہونے والے ٹوکنز فراہم کرتے ہیں
  2. ویب ہک سیکریٹس فعال کریں - ہمیشہ HMAC-SHA256 کے ساتھ ویب ہک سگنیچرز کی تصدیق کریں
  3. مشروط درخواستیں استعمال کریں - ریٹ کی حد کے کوٹے کو ضائع کرنے سے بچنے کے لیے ETags کا فائدہ اٹھائیں
  4. بڑے ریسپانسز کو پیجینیٹ کریں - GitHub فی صفحہ زیادہ سے زیادہ 100 آئٹمز واپس کرتا ہے؛ Link ہیڈرز کے ساتھ اتریٹ کریں
  5. کم سرگرمی کے دوران سنک کریں - پیک ڈیولپمنٹ گھنٹوں کے باہر مکمل سنکس شیڈول کریں
  6. ریٹ کی حد کے ہیڈرز کی نگرانی کریں - فعال طور پر تھروٹل کرنے کے لیے X-RateLimit-Remaining چیک کریں

سیکیورٹی

  • GitHub App Authentication - قلیل مدتی installation ٹوکنز کے ساتھ RSA key پر مبنی JWT
  • ویب ہک سگنیچرز - تمام ویب ہک پے لوڈز پر HMAC-SHA256 سگنیچر کی تصدیق
  • Fine-Grained ٹوکنز - مخصوص ریپوزٹریز اور اجازتوں تک محدود
  • صرف HTTPS - تمام API مواصلات TLS 1.2+ کے ذریعے خفیہ کردہ
  • خفیہ کردہ اسٹوریج - Tajo میں نجی کیز اور ٹوکنز آرام کی حالت میں خفیہ کردہ
  • ٹوکن کی میعاد - Fine-grained ٹوکنز خود بخود ختم ہو جاتے ہیں؛ گردش الرٹس سیٹ کریں

متعلقہ وسائل

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔