GitHub-connector
Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.
Illustratie · voorbeelddata
Voorbeeld van synchronisatie
Bron
GitHub
Connectorstatus: Gepland
Bestemming
Je andere tool
Connectorstatus: Eigen tool
Veldtoewijzing
| Bronveld | Doelveld | Voorbeeldwaarde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Opstellen
- Eén record controleren
- Deze versie goedkeuren
Statussen gelden per connector en garanderen niet dat deze synchronisatie klaar is. De velden zijn illustratief. Controleer het echte schema en de rechten voordat een synchronisatie draait.
Verbind je GitHub-repositories met Brevo voor developer-engagementtracking, release-notificatieworkflows en monitoring van community-activiteit via Tajo.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | GitHub |
| Categorie | Custom |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Events, Gebruikers, Repositories |
| API-type | REST API, GraphQL API |
| Authenticatie | GitHub App / Personal Access Token / OAuth 2.0 |
| Base URL | https://api.github.com |
| API-versie | 2022-11-28 (header-gebaseerde versionering) |
Functies
- Issue- en PR-tracking - Synchroniseer issue- en pull request-events naar Brevo-contacttimelines
- Release-notificaties - Trigger Brevo-campagnes bij nieuwe repository-releases
- Contributor-sync - Map GitHub-contributors naar Brevo-contacten voor community-engagement
- Star- en fork-tracking - Monitor populariteitsstatistieken van repositories
- Webhook event forwarding - Stuur GitHub-events door naar Brevo-automatiseringen
- Repositorycatalogus - Synchroniseer repository-metadata als Brevo-catalogusitems
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een GitHub-account met toegang tot de doel-repositories
- Een GitHub App of Personal Access Token (fine-grained aanbevolen)
- Admin-toegang tot repositories voor webhook-configuratie
- Een Brevo-account met API-toegang
- Een Tajo-account met een actief abonnement
Authenticatie
GitHub ondersteunt meerdere authenticatiemethoden. Tajo beveelt GitHub Apps aan voor toegang op organisatieniveau.
Optie 1: GitHub App (aanbevolen)
- Navigeer naar Settings > Developer settings > GitHub Apps
- Klik op New GitHub App
- Configureer de app met deze permissies:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star ForkOptie 2: Fine-Grained Personal Access Token
- Ga naar Settings > Developer settings > Personal access tokens > Fine-grained tokens
- Klik op Generate new token
- Selecteer de doel-repositories
- Geef deze permissies:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyTokenbeveiliging
Fine-grained tokens hebben een verloopdatum. Zet tokenrotatie op voordat ze verlopen. GitHub App-installation tokens vernieuwen automatisch en hebben de voorkeur voor productiegebruik.
Verbinden met Tajo
# 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_TOKENConfiguratie
Basisinstelling
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: 21Veldmapping
Map GitHub-gebruikersdata naar Brevo-contactattributen:
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-endpoints
Tajo integreert met de volgende GitHub REST API-endpoints:
| Endpoint | Method | Doel |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Lijst repository-issues |
/repos/{owner}/{repo}/pulls | GET | Lijst pull requests |
/repos/{owner}/{repo}/releases | GET | Lijst releases |
/repos/{owner}/{repo}/contributors | GET | Lijst contributors |
/repos/{owner}/{repo}/stargazers | GET | Lijst stargazers |
/repos/{owner}/{repo}/forks | GET | Lijst forks |
/repos/{owner}/{repo}/events | GET | Lijst repository-events |
/users/{username} | GET | Haal gebruikersprofiel op |
/orgs/{org}/members | GET | Lijst organisatieleden |
/repos/{owner}/{repo}/hooks | POST | Maak webhook aan |
Codevoorbeelden
Connector initialiseren
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 synchroniseren naar 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// }Webhook-events afhandelen
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');});Release-campagne triggeren
// 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 } });});Rate limits
GitHub hanteert rate limits afhankelijk van de authenticatiemethode:
| Authenticatie | Primaire rate limit | Search API |
|---|---|---|
| Unauthenticated | 60 requests/uur | 10 requests/minuut |
| Personal Access Token | 5.000 requests/uur | 30 requests/minuut |
| GitHub App (installation) | 5.000 requests/uur | 30 requests/minuut |
| GitHub App (user-to-server) | 5.000 requests/uur | 30 requests/minuut |
Conditional Requests
Tajo gebruikt conditional requests (If-None-Match- / If-Modified-Since-headers) om het API-verbruik te verlagen. Responses met 304 Not Modified tellen niet mee voor rate limits.
Aanvullende limieten:
- Secondary rate limits: Niet meer dan 100 gelijktijdige requests. Niet meer dan 900 punten per minuut voor REST API-endpoints.
- GraphQL: 5.000 punten per uur (querycost varieert per complexiteit).
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Verlopen token of verkeerde credentials | Regenereer token of herinstalleer GitHub App |
| 403 Forbidden | Onvoldoende rechten | Controleer tokenscopes of app-permissies |
| 404 Not Found | Private repo zonder toegang | Geef repository-toegang aan token of app |
| Rate limit exceeded | Te veel API-calls | Zet conditional requests aan en verlaag syncfrequentie |
| Webhooks niet ontvangen | Verkeerde URL of firewall | Controleer of de webhook-URL publiek bereikbaar is |
Debugmodus
connectors: github: debug: true log_level: verbose log_webhooks: trueVerbinding testen
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)Best practices
- Gebruik GitHub Apps in plaats van PATs - GitHub Apps bieden granulaire permissies en tokens die automatisch verversen
- Zet webhook secrets aan - Verifieer altijd webhook-signatures met HMAC-SHA256
- Gebruik conditional requests - Benut ETags om geen rate limit-quota te verspillen
- Pagineer grote responses - GitHub retourneert max. 100 items per pagina; itereer met
Link-headers - Synchroniseer tijdens laagactieve uren - Plan full syncs buiten piek-developmenturen
- Monitor rate limit-headers - Controleer
X-RateLimit-Remainingom proactief te throttlen
Beveiliging
- GitHub App-authenticatie - RSA-key-gebaseerde JWT met kortlevende installation tokens
- Webhook-signatures - HMAC-SHA256-signature-verificatie op alle webhook-payloads
- Fine-Grained Tokens - Gescoped tot specifieke repositories en permissies
- Alleen HTTPS - Alle API-communicatie is versleuteld via TLS 1.2+
- Encrypted storage - Private keys en tokens versleuteld opgeslagen bij Tajo
- Tokenverloop - Fine-grained tokens verlopen automatisch; zet rotatie-alerts op