Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

GitHub Connector

Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.

Illustration · Beispieldaten

Sync-Beispiel

Einen Datensatz prüfen

Quelle

GitHub

Connector-Status: Geplant

Ziel

Ihr anderes Tool

Connector-Status: Eigenes Tool

QuellfeldZielfeldBeispielwert
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Entwerfen
  2. Einen Datensatz prüfen
  3. Diese Version freigeben

Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.

Verbinde deine GitHub-Repositories über Tajo mit Brevo für Developer-Engagement-Tracking, Release-Benachrichtigungs-Workflows und Community-Aktivitätsmonitoring.

Überblick

EigenschaftWert
PlattformGitHub
KategorieCustom
EinrichtungsaufwandMittel
Offizielle IntegrationNein
Synchronisierte DatenEvents, Nutzer:innen, Repositories
API-TypREST API, GraphQL API
AuthentifizierungGitHub App / Personal Access Token / OAuth 2.0
Basis-URLhttps://api.github.com
API-Version2022-11-28 (header-basierte Versionierung)

Funktionen

  • Issue- und PR-Tracking - Synchronisiere Issue- und Pull-Request-Events in Brevo-Kontaktverläufe
  • Release-Benachrichtigungen - Löse Brevo-Kampagnen bei neuen Repository-Releases aus
  • Contributor-Synchronisierung - Ordne GitHub-Contributor:innen Brevo-Kontakten zu, um Community-Engagement zu fördern
  • Star- und Fork-Tracking - Überwache Popularitätsmetriken von Repositories
  • Webhook-Event-Weiterleitung - Leite GitHub-Events an Brevo-Automatisierungen weiter
  • Repository-Katalog - Synchronisiere Repository-Metadaten als Brevo-Katalogeinträge

Voraussetzungen

Bevor du beginnst, stelle sicher, dass du Folgendes hast:

  1. Ein GitHub-Konto mit Zugriff auf die Ziel-Repositories
  2. Eine GitHub-App oder ein Personal Access Token (Fine-Grained empfohlen)
  3. Admin-Zugriff auf Repositories für die Webhook-Konfiguration
  4. Ein Brevo-Konto mit API-Zugriff
  5. Ein Tajo-Konto mit aktivem Abonnement

Authentifizierung

GitHub unterstützt mehrere Authentifizierungsmethoden. Tajo empfiehlt die Verwendung von GitHub Apps für Zugriff auf Organisationsebene.

Option 1: GitHub-App (Empfohlen)

  1. Navigiere zu Settings > Developer settings > GitHub Apps
  2. Klicke auf New GitHub App
  3. Konfiguriere die App mit diesen Berechtigungen:
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

Option 2: Fine-Grained Personal Access Token

  1. Gehe zu Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Klicke auf Generate new token
  3. Wähle die Ziel-Repositories aus
  4. Gewähre diese Berechtigungen:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Token-Sicherheit

Fine-Grained-Tokens haben Ablaufdaten. Richte eine Token-Rotation vor Ablauf ein. GitHub-App-Installationstokens werden automatisch erneuert und sind für den produktiven Einsatz zu bevorzugen.

Verbindung zu Tajo herstellen

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

Konfiguration

Grundeinrichtung

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

Feldzuordnung

Ordne GitHub-Nutzer:innen-Daten Brevo-Kontaktattributen zu:

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-Endpunkte

Tajo integriert die folgenden Endpunkte der GitHub REST API:

EndpunktMethodeZweck
/repos/{owner}/{repo}/issuesGETRepository-Issues auflisten
/repos/{owner}/{repo}/pullsGETPull Requests auflisten
/repos/{owner}/{repo}/releasesGETReleases auflisten
/repos/{owner}/{repo}/contributorsGETContributor:innen auflisten
/repos/{owner}/{repo}/stargazersGETStargazer auflisten
/repos/{owner}/{repo}/forksGETForks auflisten
/repos/{owner}/{repo}/eventsGETRepository-Events auflisten
/users/{username}GETNutzer:innen-Profil abrufen
/orgs/{org}/membersGETMitglieder der Organisation auflisten
/repos/{owner}/{repo}/hooksPOSTWebhook anlegen

Code-Beispiele

Connector initialisieren

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
});

Contributor:innen mit Brevo synchronisieren

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 verarbeiten

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-Kampagne auslösen

// 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
}
});
});

Ratenbegrenzungen

GitHub erzwingt Ratenbegrenzungen je nach Authentifizierungsmethode:

AuthentifizierungPrimäres Rate-LimitSearch API
Nicht authentifiziert60 Anfragen/Stunde10 Anfragen/Minute
Personal Access Token5.000 Anfragen/Stunde30 Anfragen/Minute
GitHub App (Installation)5.000 Anfragen/Stunde30 Anfragen/Minute
GitHub App (User-to-Server)5.000 Anfragen/Stunde30 Anfragen/Minute

Conditional Requests

Tajo verwendet Conditional Requests (If-None-Match/If-Modified-Since-Header), um den API-Verbrauch zu reduzieren. Antworten mit 304 Not Modified werden nicht auf das Rate-Limit angerechnet.

Weitere Begrenzungen:

  • Sekundäre Ratenbegrenzungen: Maximal 100 gleichzeitige Anfragen. Maximal 900 Punkte pro Minute für REST-API-Endpunkte.
  • GraphQL: 5.000 Punkte pro Stunde (Abfragekosten variieren je nach Komplexität).

Fehlerbehebung

Häufige Probleme

ProblemUrsacheLösung
401 UnauthorizedAbgelaufenes Token oder falsche ZugangsdatenToken erneuern oder GitHub-App neu installieren
403 ForbiddenUnzureichende BerechtigungenToken-Scopes oder App-Berechtigungen prüfen
404 Not FoundPrivates Repo ohne ZugriffRepository-Zugriff dem Token oder der App erteilen
Rate Limit überschrittenZu viele API-AufrufeConditional Requests aktivieren und Synchronisationsfrequenz reduzieren
Webhooks werden nicht empfangenFalsche URL oder FirewallPrüfe, ob die Webhook-URL öffentlich erreichbar ist

Debug-Modus

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

Verbindung testen

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)

Best Practices

  1. GitHub Apps statt PATs verwenden - GitHub Apps bieten granulare Berechtigungen und automatisch erneuerte Tokens
  2. Webhook-Secrets aktivieren - Verifiziere Webhook-Signaturen stets mit HMAC-SHA256
  3. Conditional Requests nutzen - Verwende ETags, um Rate-Limit-Kontingente zu schonen
  4. Große Antworten paginieren - GitHub liefert maximal 100 Einträge pro Seite; iteriere über Link-Header
  5. Vollständige Syncs zu Niedriglastzeiten planen - Führe Full-Syncs außerhalb der Hauptentwicklungszeiten aus
  6. Rate-Limit-Header überwachen - Prüfe X-RateLimit-Remaining, um proaktiv zu drosseln

Sicherheit

  • GitHub-App-Authentifizierung - RSA-Key-basierte JWTs mit kurzlebigen Installationstokens
  • Webhook-Signaturen - HMAC-SHA256-Signaturprüfung für alle Webhook-Payloads
  • Fine-Grained Tokens - Auf bestimmte Repositories und Berechtigungen beschränkt
  • Nur HTTPS - Die gesamte API-Kommunikation ist per TLS 1.2+ verschlüsselt
  • Verschlüsselte Speicherung - Private Keys und Tokens werden in Tajo verschlüsselt gespeichert
  • Token-Ablauf - Fine-Grained-Tokens laufen automatisch ab; richte Rotationsalarme ein

Verwandte Ressourcen

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.

Diese Seite als Markdown: github.md

Markdown wird geladen …
In Claude öffnen In ChatGPT öffnen