GitHub konnektor
Csatlakoztasd a GitHub repository-jaidat a Brevóhoz fejlesztői elköteleződés-követéshez, kiadási értesítési munkafolyamatokhoz és közösségi tevékenység-figyeléshez a Tajo segítségével.
Áttekintés
| Tulajdonság | Érték |
|---|---|
| Platform | GitHub |
| Kategória | Egyéni |
| Telepítés bonyolultsága | Közepes |
| Hivatalos integráció | Nem |
| Szinkronizált adatok | Események, Felhasználók, Repository-k |
| API típus | REST API, GraphQL API |
| Hitelesítés | GitHub App / Személyes hozzáférési token / OAuth 2.0 |
| Alap URL | https://api.github.com |
| API verzió | 2022-11-28 (fejléc alapú verziózás) |
Funkciók
- Hibajegy és PR követés – Hibajegy és pull request események szinkronizálása Brevo kapcsolati idővonalakra
- Kiadási értesítések – Brevo kampányok indítása új repository kiadásokon
- Közreműködő-szinkronizáció – GitHub közreműködők leképezése Brevo kapcsolatokhoz közösségi elköteleződéshez
- Csillag és fork követés – Repository népszerűségi mutatók figyelése
- Webhook-esemény továbbítás – GitHub események továbbítása Brevo automatizálásokhoz
- Repository katalógus – Repository metaadatok szinkronizálása Brevo katalóguselemekként
Előfeltételek
Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:
- Egy GitHub fiókkal hozzáféréssel a célrepository-khoz
- Egy GitHub App-pal vagy személyes hozzáférési tokennel (részletes ajánlott)
- Adminisztrátori hozzáféréssel a repository-khoz webhook-konfiguráláshoz
- Egy Brevo fiókkal API-hozzáféréssel
- Egy Tajo fiókkal aktív előfizetéssel
Hitelesítés
A GitHub több hitelesítési módszert támogat. A Tajo a GitHub Apps használatát javasolja szervezeti szintű hozzáféréshez.
1. lehetőség: GitHub App (ajánlott)
- Menj a Settings > Developer settings > GitHub Apps menüpontra
- Kattints a New GitHub App gombra
- Konfiguráld az alkalmazást ezekkel az engedélyekkel:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star Fork2. lehetőség: Részletes személyes hozzáférési token
- Menj a Settings > Developer settings > Personal access tokens > Fine-grained tokens menüpontra
- Kattints a Generate new token gombra
- Válaszd ki a célrepository-kat
- Add meg ezeket az engedélyeket:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyToken biztonság
A részletes tokenek lejárati dátummal rendelkeznek. Állíts be token rotációt a lejárat előtt. A GitHub App telepítési tokenek automatikusan frissülnek, és éles használatra ajánlottak.
Csatlakozás a Tajóhoz
# Using GitHub Apptajo connectors install github \ --app-id $GITHUB_APP_ID \ --private-key-path ./github-app-key.pem \ --installation-id $GITHUB_INSTALLATION_ID
# Using Personal Access Tokentajo connectors install github \ --token $GITHUB_TOKENKonfiguráció
Alapbeállítás
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: 21Mezőleképezés
Képezd le a GitHub felhasználói adatokat Brevo kapcsolat-attribútumokhoz:
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 végpontok
A Tajo az alábbi GitHub REST API végpontokkal integrálódik:
| Végpont | Módszer | Cél |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Repository hibajegyek listázása |
/repos/{owner}/{repo}/pulls | GET | Pull requestek listázása |
/repos/{owner}/{repo}/releases | GET | Kiadások listázása |
/repos/{owner}/{repo}/contributors | GET | Közreműködők listázása |
/repos/{owner}/{repo}/stargazers | GET | Csillagozók listázása |
/repos/{owner}/{repo}/forks | GET | Fork-ok listázása |
/repos/{owner}/{repo}/events | GET | Repository-események listázása |
/users/{username} | GET | Felhasználói profil lekérése |
/orgs/{org}/members | GET | Szervezeti tagok listázása |
/repos/{owner}/{repo}/hooks | POST | Webhook létrehozása |
Kódpéldák
A konnektor inicializálása
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});Közreműködők szinkronizálása a Brevóba
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// }Webhook-események kezelése
app.post('/webhooks/github', async (req, res) => { const signature = req.get('X-Hub-Signature-256'); const event = req.get('X-GitHub-Event');
// Verify webhook signature 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');});Kiadási kampány indítása
// Listen for new releases and trigger Brevo campaigntajo.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 } });});Ráta-korlátok
A GitHub hitelesítési módszer alapján alkalmaz ráta-korlátokat:
| Hitelesítés | Elsődleges ráta-korlát | Keresési API |
|---|---|---|
| Nem hitelesített | 60 kérés/óra | 10 kérés/perc |
| Személyes hozzáférési token | 5 000 kérés/óra | 30 kérés/perc |
| GitHub App (telepítés) | 5 000 kérés/óra | 30 kérés/perc |
| GitHub App (user-to-server) | 5 000 kérés/óra | 30 kérés/perc |
Feltételes kérések
A Tajo feltételes kéréseket (If-None-Match / If-Modified-Since fejlécek) használ az API fogyasztás csökkentéséhez. A 304 Not Modified válaszok nem számítanak bele a ráta-korlátba.
További korlátok:
- Másodlagos ráta-korlátok: Legfeljebb 100 egyidejű kérés. Legfeljebb 900 pont percenként a REST API végpontokon.
- GraphQL: 5 000 pont óránként (a lekérdezési költség a komplexitástól függ).
Hibaelhárítás
Gyakori problémák
| Probléma | Ok | Megoldás |
|---|---|---|
| 401 Unauthorized | Lejárt token vagy rossz hitelesítő adatok | Generáld újra a tokent vagy telepítsd újra a GitHub App-ot |
| 403 Forbidden | Elégtelen engedélyek | Ellenőrizd a token hatóköröket vagy az App engedélyeket |
| 404 Not Found | Privát repository hozzáférés nélkül | Adj repository hozzáférést a tokenhez vagy az App-hoz |
| Ráta-korlát túllépve | Túl sok API hívás | Engedélyezd a feltételes kéréseket és csökkentsd a szinkronizálás gyakoriságát |
| Webhookok nem érkeznek meg | Helytelen URL vagy tűzfal | Ellenőrizd, hogy a webhook URL nyilvánosan elérhető |
Hibakeresési mód
connectors: github: debug: true log_level: verbose log_webhooks: trueKapcsolat tesztelése
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)Legjobb gyakorlatok
- Használj GitHub App-okat PAT-ok helyett – A GitHub App-ok részletes engedélyeket és automatikusan frissülő tokeneket biztosítanak
- Engedélyezz webhook titkokat – Mindig ellenőrizd a webhook aláírásokat HMAC-SHA256-tal
- Használj feltételes kéréseket – Használj ETaget a ráta-korlát kvóta pazarlásának elkerülésére
- Lapozd az nagy válaszokat – A GitHub oldalanként max. 100 elemet ad vissza; iterálj a
Linkfejlécekkel - Kis aktivitáskor szinkronizálj – Ütemezd a teljes szinkronizálásokat a csúcsfejlesztési időpontokon kívülre
- Figyeld a ráta-korlát fejléceket – Ellenőrizd az
X-RateLimit-Remainingértékét a proaktív korlátozáshoz
Biztonság
- GitHub App hitelesítés – RSA kulcs alapú JWT rövid életű telepítési tokenekkel
- Webhook aláírások – HMAC-SHA256 aláírás-ellenőrzés minden webhook hasznos terhelésen
- Részletes tokenek – Adott repository-kra és engedélyekre korlátozva
- Csak HTTPS – Minden API kommunikáció TLS 1.2+-on keresztül titkosítva
- Titkosított tárolás – Privát kulcsok és tokenek titkosítva tárolódnak a Tajóban
- Token lejárat – A részletes tokenek automatikusan lejárnak; állíts be rotációs riasztásokat