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
PlatformGitHub
KategóriaEgyéni
Telepítés bonyolultságaKözepes
Hivatalos integrációNem
Szinkronizált adatokEsemények, Felhasználók, Repository-k
API típusREST API, GraphQL API
HitelesítésGitHub App / Személyes hozzáférési token / OAuth 2.0
Alap URLhttps://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:

  1. Egy GitHub fiókkal hozzáféréssel a célrepository-khoz
  2. Egy GitHub App-pal vagy személyes hozzáférési tokennel (részletes ajánlott)
  3. Adminisztrátori hozzáféréssel a repository-khoz webhook-konfiguráláshoz
  4. Egy Brevo fiókkal API-hozzáféréssel
  5. 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)

  1. Menj a Settings > Developer settings > GitHub Apps menüpontra
  2. Kattints a New GitHub App gombra
  3. 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
Fork

2. lehetőség: Részletes személyes hozzáférési token

  1. Menj a Settings > Developer settings > Personal access tokens > Fine-grained tokens menüpontra
  2. Kattints a Generate new token gombra
  3. Válaszd ki a célrepository-kat
  4. Add meg ezeket az engedélyeket:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Token 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

Terminal window
# Using GitHub App
tajo connectors install github \
--app-id $GITHUB_APP_ID \
--private-key-path ./github-app-key.pem \
--installation-id $GITHUB_INSTALLATION_ID
# Using Personal Access Token
tajo connectors install github \
--token $GITHUB_TOKEN

Konfigurá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: 21

Mező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_BIO

API végpontok

A Tajo az alábbi GitHub REST API végpontokkal integrálódik:

VégpontMódszerCél
/repos/{owner}/{repo}/issuesGETRepository hibajegyek listázása
/repos/{owner}/{repo}/pullsGETPull requestek listázása
/repos/{owner}/{repo}/releasesGETKiadások listázása
/repos/{owner}/{repo}/contributorsGETKözreműködők listázása
/repos/{owner}/{repo}/stargazersGETCsillagozók listázása
/repos/{owner}/{repo}/forksGETFork-ok listázása
/repos/{owner}/{repo}/eventsGETRepository-események listázása
/users/{username}GETFelhasználói profil lekérése
/orgs/{org}/membersGETSzervezeti tagok listázása
/repos/{owner}/{repo}/hooksPOSTWebhook 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 campaign
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
}
});
});

Ráta-korlátok

A GitHub hitelesítési módszer alapján alkalmaz ráta-korlátokat:

HitelesítésElsődleges ráta-korlátKeresési API
Nem hitelesített60 kérés/óra10 kérés/perc
Személyes hozzáférési token5 000 kérés/óra30 kérés/perc
GitHub App (telepítés)5 000 kérés/óra30 kérés/perc
GitHub App (user-to-server)5 000 kérés/óra30 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émaOkMegoldás
401 UnauthorizedLejárt token vagy rossz hitelesítő adatokGeneráld újra a tokent vagy telepítsd újra a GitHub App-ot
403 ForbiddenElégtelen engedélyekEllenőrizd a token hatóköröket vagy az App engedélyeket
404 Not FoundPrivát repository hozzáférés nélkülAdj repository hozzáférést a tokenhez vagy az App-hoz
Ráta-korlát túllépveTúl sok API hívásEngedélyezd a feltételes kéréseket és csökkentsd a szinkronizálás gyakoriságát
Webhookok nem érkeznek megHelytelen URL vagy tűzfalEllenőrizd, hogy a webhook URL nyilvánosan elérhető

Hibakeresési mód

connectors:
github:
debug: true
log_level: verbose
log_webhooks: true

Kapcsolat tesztelése

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)

Legjobb gyakorlatok

  1. Használj GitHub App-okat PAT-ok helyett – A GitHub App-ok részletes engedélyeket és automatikusan frissülő tokeneket biztosítanak
  2. Engedélyezz webhook titkokat – Mindig ellenőrizd a webhook aláírásokat HMAC-SHA256-tal
  3. Használj feltételes kéréseket – Használj ETaget a ráta-korlát kvóta pazarlásának elkerülésére
  4. Lapozd az nagy válaszokat – A GitHub oldalanként max. 100 elemet ad vissza; iterálj a Link fejlécekkel
  5. Kis aktivitáskor szinkronizálj – Ütemezd a teljes szinkronizálásokat a csúcsfejlesztési időpontokon kívülre
  6. 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

Kapcsolódó források

Subscribe to updates

developer-docs

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

auto-detect
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.