GitHub Connector
Connectorstatus: Planlagt Ikke bygget endnu. Tajo kører ikke denne connector i dag.
Illustration · eksempeldata
Eksempel på synkronisering
Kilde
GitHub
Connectorstatus: Planlagt
Destination
Dit andet værktøj
Connectorstatus: Eget værktøj
Feltmapping
| Kildefelt | Destinationsfelt | Eksempelværdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Udkast
- Gennemse én post
- Godkend denne version
Status gælder den enkelte connector og garanterer ikke, at denne synkronisering er klar. Felterne er illustrative. Tjek det faktiske skema og tilladelser før en synkronisering.
Forbind dine GitHub-repositories med Brevo til sporing af udvikler-engagement, workflows til udgivelsesnotifikationer og overvågning af fællesskabsaktivitet gennem Tajo.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | GitHub |
| Kategori | Brugerdefineret |
| Opsætningskompleksitet | Moderat |
| Officiel integration | Nej |
| Synkroniserede data | Hændelser, brugere, repositories |
| API-type | REST API, GraphQL API |
| Autentifikation | GitHub App / Personal Access Token / OAuth 2.0 |
| Base-URL | https://api.github.com |
| API-version | 2022-11-28 (header-baseret versionering) |
Funktioner
- Sporing af issues og PR’er - Synkronisér issue- og pull request-hændelser til Brevo-kontakttidslinjer
- Udgivelsesnotifikationer - Udløs Brevo-kampagner ved nye repository-udgivelser
- Synkronisering af bidragydere - Kortlæg GitHub-bidragydere til Brevo-kontakter til fællesskabs-engagement
- Sporing af stars og forks - Overvåg repository-popularitetsmetrikker
- Videresendelse af webhook-hændelser - Videresend GitHub-hændelser til Brevo-automatiseringer
- Repository-katalog - Synkronisér repository-metadata som Brevo-katalogelementer
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En GitHub-konto med adgang til målrepositories
- En GitHub App eller et Personal Access Token (fine-grained anbefales)
- Admin-adgang til repositories til webhook-konfiguration
- En Brevo-konto med API-adgang
- En Tajo-konto med aktivt abonnement
Autentifikation
GitHub understøtter flere autentifikationsmetoder. Tajo anbefaler at bruge GitHub Apps til adgang på organisationsniveau.
Mulighed 1: GitHub App (anbefalet)
- Gå til Settings > Developer settings > GitHub Apps
- Klik på New GitHub App
- Konfigurér appen med disse tilladelser:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star ForkMulighed 2: Fine-Grained Personal Access Token
- Gå til Settings > Developer settings > Personal access tokens > Fine-grained tokens
- Klik på Generate new token
- Vælg målrepositories
- Tildel disse tilladelser:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyToken-sikkerhed
Fine-grained tokens har udløbsdatoer. Opsæt token-rotation før udløb. GitHub App-installationstokens opdateres automatisk og foretrækkes til produktionsbrug.
Forbind til 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_TOKENKonfiguration
Grundlæggende opsætning
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: 21Feltmapping
Kortlæg GitHub-brugerdata til Brevo-kontaktattributter:
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 integrerer med følgende GitHub REST API-endpoints:
| Endpoint | Metode | Formål |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Vis repository-issues |
/repos/{owner}/{repo}/pulls | GET | Vis pull requests |
/repos/{owner}/{repo}/releases | GET | Vis udgivelser |
/repos/{owner}/{repo}/contributors | GET | Vis bidragydere |
/repos/{owner}/{repo}/stargazers | GET | Vis stargazers |
/repos/{owner}/{repo}/forks | GET | Vis forks |
/repos/{owner}/{repo}/events | GET | Vis repository-hændelser |
/users/{username} | GET | Hent brugerprofil |
/orgs/{org}/members | GET | Vis organisationsmedlemmer |
/repos/{owner}/{repo}/hooks | POST | Opret webhook |
Kodeeksempler
Initialisér connector
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});Synkronisér bidragydere til 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// }Håndtér webhook-hændelser
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');});Udløs udgivelseskampagne
// 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 håndhæver rate limits baseret på autentifikationsmetode:
| Autentifikation | Primær rate limit | Search API |
|---|---|---|
| Uautentificeret | 60 anmodninger/time | 10 anmodninger/minut |
| Personal Access Token | 5.000 anmodninger/time | 30 anmodninger/minut |
| GitHub App (installation) | 5.000 anmodninger/time | 30 anmodninger/minut |
| GitHub App (user-to-server) | 5.000 anmodninger/time | 30 anmodninger/minut |
Betingede anmodninger
Tajo bruger betingede anmodninger (If-None-Match / If-Modified-Since-headers) for at reducere API-forbruget. Svar med 304 Not Modified tæller ikke med i rate limits.
Yderligere grænser:
- Sekundære rate limits: Ikke mere end 100 samtidige anmodninger. Ikke mere end 900 point pr. minut for REST API-endpoints.
- GraphQL: 5.000 point pr. time (forespørgselsomkostninger varierer efter kompleksitet).
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Udløbet token eller forkerte legitimationsoplysninger | Regenerér token eller geninstallér GitHub App |
| 403 Forbidden | Utilstrækkelige tilladelser | Tjek token-scopes eller app-tilladelser |
| 404 Not Found | Privat repo uden adgang | Giv repository-adgang til token eller app |
| Rate limit overskredet | For mange API-kald | Aktivér betingede anmodninger og reducér synkroniseringsfrekvens |
| Webhooks ikke modtaget | Forkert URL eller firewall | Verificér, at webhook-URL er offentligt tilgængelig |
Debug-tilstand
connectors: github: debug: true log_level: verbose log_webhooks: trueTestforbindelse
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)Bedste praksis
- Brug GitHub Apps frem for PAT’er - GitHub Apps giver granulære tilladelser og automatisk opdaterende tokens
- Aktivér webhook-secrets - Verificér altid webhook-signaturer med HMAC-SHA256
- Brug betingede anmodninger - Udnyt ETags for at undgå at spilde rate limit-kvote
- Paginér store svar - GitHub returnerer maks. 100 elementer pr. side; itérér med
Link-headers - Synkronisér uden for spidsbelastning - Planlæg fulde synkroniseringer uden for peak-udviklingstider
- Overvåg rate limit-headers - Tjek
X-RateLimit-Remainingfor proaktivt at throttle
Sikkerhed
- GitHub App-autentifikation - RSA-nøglebaseret JWT med kortvarige installationstokens
- Webhook-signaturer - HMAC-SHA256-signaturverifikation på alle webhook-payloads
- Fine-Grained tokens - Scoped til specifikke repositories og tilladelser
- Kun HTTPS - Al API-kommunikation krypteres via TLS 1.2+
- Krypteret opbevaring - Private nøgler og tokens krypteres i hvile i Tajo
- Token-udløb - Fine-grained tokens udløber automatisk; opsæt rotationsalarmer